1 of 25

�����Allen School “300s” �Curriculum Overview

Also: Career SeminarsDan Grossman�November 25, 2024�

1

2 of 25

Goal (in 10 minutes)

Content overview (“what do you learn where”) of the CSE curriculum,

particularly the CSE 300s, for direct-admit freshmen

Why:

  • Empowering + exciting + reassuring to hear what lies ahead
  • Can help with course planning and finding areas of interest

But:

  • Much may not make sense: very hard to describe courses you haven’t taken yet (!)
    • Analogy: Tell a 9th-grader about 12th-grade classes
    • Courses will make sense as you take them: we designed it that way!

2

3 of 25

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

4 of 25

400-level

  • Large, mostly unordered set of “senior-level courses”
    • But usually start taking them as a junior
  • ~50-150 students per course
  • ~15 courses offered each quarter

  • Very roughly decreasing order of current popularity:

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

5 of 25

Capstones

  • Our smallest undergrad courses: 20-30 students

  • Design and implementation team projects, with iteration, presentation, and more

  • ~10 offered per year, different topics available each year: Virtual Reality, Operating Systems, Games, Hardware, Security, Biology, Robotics, …

  • < ½ CSE students take one (used to be higher)

  • Not strictly after 400s despite the picture

5

300

400

Capstone

100

6 of 25

6

“300-level”

The fundamentals!

“400-level”

Senior-level courses

capstone

design

“100-level”

Intro. programming

7 of 25

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 of 25

8

208

9 of 25

9

The fundamental math that gives meaning/correctness to computing:

logic, proofs, induction, sets,

finite state machines,

undecidability

208

10 of 25

10

208

Probability, statistics, and randomness in computing:

Likelihood of X given Y, …

11 of 25

11

208

Matrices (arrays of arrays), representing systems of linear equations – main algorithms, properties, etc.

12 of 25

12

208

Design, specify, test, and implement programs larger than at 100-level

Abstractions, advanced Java features, design patterns, etc.

13 of 25

13

208

Data structures: trees, heaps, hashing, graphs, …

Run-time analysis: “Big-O”

Parallelism: Algorithms with > 1 processor

14 of 25

14

208

Design and implementation of user interfaces – graphical elements and when/how to use them well

15 of 25

15

208

[my favorite class ☺, elegant software from new perspectives]

functional programming, static vs. dynamic typing, modularity, general principles across all languages

16 of 25

16

208

Using databases and other systems for large-scale, persistent data storage, management, and analysis

17 of 25

17

208

Tools and concepts used in many other classes: Linux command-line, version control (git), more

18 of 25

18

208

All the key levels between languages like Java and the hardware, how “it’s all 1s and 0s”

19 of 25

19

208

Builds on 351 to teach effective principles for programming in C, which is “closer to hardware”

20 of 25

20

208

Intro to EE (circuits, signals, processing waveforms) for non-EE majors

21 of 25

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

22 of 25

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

23 of 25

Whew ☺

  • That was ~1.5 years of CSE classes in ~5 minutes
    • Empowering + reassuring + exciting, not “oh, that all makes sense”

  • Try to keep the “big picture” amid the day-to-day studying
    • Curriculum was designed as a coherent package
    • Each course complements the others and should forever change the way you look at CSE (and the world!)
    • Early on, courses may seem disconnected, but it “all fits together” as you learn more
      • It’s a known, good thing that CSE 123, 311, 351 are nothing like each other

  • Why the 300s are my favorite: The classic, timeless elegance after introductory programming and before advanced material
    • I’ve taught CSE 331 4x, CSE 332 2x, CSE 341 16x (!), CSE 351 2x

23

24 of 25

Career prep?

  • Courses teach you abilities/skills/knowledge essential to your career,*
    • But not focused on all the other aspects of career success

  • Have heard about activities like resume reviews, mock interviews, career fairs, …
  • Also have whole seminars about career prep
    • At multiple stages along your journey
    • That’s why CSE 190B doesn’t do more

*Remember earlier presentation on many career pathways, not just “software engineer at large company”!

24

25 of 25

Career prep – current offerings

1. 492J: Career Preparation Seminar: about the recruiting process with ~70% about prepping for technical interviews

    • Ideal time to take is quarter after CSE 332
    • Try to offer most quarters

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”

    • Probably best for juniors but flexible
    • Each Winter

3. 492C: Navigating Early-Career Challenges: Coherent from-one-person course

    • Aimed at graduating seniors looking at key skills/challenges in first 1-2 years
    • Currently every quarter

4. 492P1 Patterns for Career Success: Coherent from-one-person course

    • Aimed at graduating seniors looking at 10ish years arc
    • Spring

25