�����Allen School “300s” �Curriculum Overview
Also: Career Seminars�Dan Grossman�November 25, 2024��
1
Goal (in 10 minutes)
Content overview (“what do you learn where”) of the CSE curriculum,
particularly the CSE 300s, for direct-admit freshmen
Why:
But:
2
CSE 121, 122, 123: 80-90% non-majors, programming fundamentals
300-level and beyond: 95-100% majors
3
“300-level”
The fundamentals!
“400-level”
Senior-level courses
capstone
design
“100-level”
Intro. programming
400-level
Algorithms, Artificial Intelligence, Machine Learning, Distributed Systems, Security, Deep Learning, Networks, Security, Operating Systems, Vision, Data Visualization, Natural Language Processing, Human-Computer Interaction, Compilers, Graphics, Complexity, Cryptography, Computational Biology, Software Engineering, Robotics, Computer Architecture, and much more!
4
300
400
Capstone
100
Capstones
5
300
400
Capstone
100
6
“300-level”
The fundamentals!
“400-level”
Senior-level courses
capstone
design
“100-level”
Intro. programming
My favorite part ☺
300-level:
The “bridge” from the introductory programming to senior-level courses
Theory: logic, discrete math, big-O, prob/stats, finite-state machines, …
Programming: specifications, testing, data structures, GUIs, C, Linux tools, …
Systems: bits, assembly, caching, managing resources, C
Hardware: [optional for CS]
Some 300-level courses required, others very popular anyways
7
8
208
9
The fundamental math that gives meaning/correctness to computing:
logic, proofs, induction, sets,
finite state machines,
undecidability
208
10
208
Probability, statistics, and randomness in computing:
Likelihood of X given Y, …
11
208
Matrices (arrays of arrays), representing systems of linear equations – main algorithms, properties, etc.
12
208
Design, specify, test, and implement programs larger than at 100-level
Abstractions, advanced Java features, design patterns, etc.
13
208
Data structures: trees, heaps, hashing, graphs, …
Run-time analysis: “Big-O”
Parallelism: Algorithms with > 1 processor
14
208
Design and implementation of user interfaces – graphical elements and when/how to use them well
15
208
[my favorite class ☺, elegant software from new perspectives]
functional programming, static vs. dynamic typing, modularity, general principles across all languages
…
16
208
Using databases and other systems for large-scale, persistent data storage, management, and analysis
17
208
Tools and concepts used in many other classes: Linux command-line, version control (git), more
18
208
All the key levels between languages like Java and the hardware, how “it’s all 1s and 0s”
19
208
Builds on 351 to teach effective principles for programming in C, which is “closer to hardware”
20
208
Intro to EE (circuits, signals, processing waveforms) for non-EE majors
21
Cross-listed with EE as follow-on to CSE 369 / EE 271, more hardware design
208
Lab courses for digital-logic hardware: building on logic concepts in 311 to build digital hardware
Lab courses for digital-logic hardware: building on logic concepts in 311 to build digital hardware
The “bridge” from the introductory programming to senior-level courses
Theory: logic, discrete math, big-O,
prob/stats, finite-state machines, …
Programming: specifications, testing,
data structures, GUIs, C, Linux tools, …
Systems: bits, assembly, caching, resource management, C, …
Hardware: [optional for CS]
22
208
Whew ☺
23
Career prep?
*Remember earlier presentation on many career pathways, not just “software engineer at large company”!
24
Career prep – current offerings
1. 492J: Career Preparation Seminar: about the recruiting process with ~70% about prepping for technical interviews
2. 492L: Alumni Career Experience Seminar (formerly Leadership Seminar Series): hear from a different alum 5-15 years ahead of you each quarter: “postcard from your future”
3. 492C: Navigating Early-Career Challenges: Coherent from-one-person course
4. 492P1 Patterns for Career Success: Coherent from-one-person course
25