CSE Undergraduate Curriculum: Where we are / Where we might go

Download Report

Transcript CSE Undergraduate Curriculum: Where we are / Where we might go

CSE Undergraduate Curriculum:
Where we are / Where we might go
Dan Grossman
Assistant Professor, 2003-present
Curriculum Revision Co-Chair, 2009
Outline
• Overview of current program
– Lots of good news
– But room to modernize
• Near-term goals: 300-level
• Longer-term possibilities: 400- and 500-level
• Questions for you
Just an overview to frame a deeper discussion
Program Outline
170 graduates a year
– Computer Engineering
• ABET accredited
– Computer Science
• more senior-level flexibility
Program Outline
intro
142/3
8 required 300-level courses
– “the core”
– details later
300-level
Program Outline
intro
142/3
300-level
Almost 20 regular 400-level courses
– Roughly “one per area”
400-level
Program Outline
intro
142/3
300-level
Capstone design course
– Synthesize, design, implement,
evaluate, present
– Examples: Video game, robotics,
developing world tech.
• Also 3-course animation
sequence
400-level
capstone
Program Outline
New, small, course-based
5th-year Master’s
– High demand from
strong students
– Limited funding to date
intro
142/3
300-level
5th-year
Masters
400-level
capstone
External constraints
Things we can’t change
• Quarter system: 10 weeks, even for “project courses”
• Community colleges
– Approved intro courses transfer
– “Possible” for transfers to
graduate in 2 years
• ABET requirements for
Computer Engineering
• Credit hour limits for degrees
intro
142/3
300-level
5th-year
Masters
400-level
capstone
General happiness
A lot is working
• Students mostly happy with courses, careers, etc.
– Exit interviews
• ABET raves in 2008
– Particularly advising staff
• Capstones a sense of accomplishment and pride
– Example: Videos shown at commencement
• Our top students are amazing
– Some of the strongest University-wide
– Many to grad school, Microsoft, Google, startups, …
– Personally: 5 senior theses in 5 years
Innovation
Curriculum growth in last 5ish years via faculty/external initiative
• “303”: Old-school, everything-else course
– C, shell-scripting, development tools, societal implications
– Now required
• New 400-level electives
– Computing with MapReduce (“the Google course”)
– Computer security
– Human-computer interaction
• Web programming (100-level)
So what’s wrong?
Many faculty (& students?), feel our curriculum is
– outdated
– uncoordinated
“The field has grown”
“Programming has changed; we haven’t”
“We were teaching this course before Nixon resigned”
Some frustration and resistance to change
– Recent revision attempt “rejected” as non-inclusive (?), risky
(?), half-baked (?), fixing the wrong things (?), ???
– Trying “for the last time” in next 6 months
• success = 1st coordinated revision in a long time
Outline
• Overview of current program
– Lots of good news
– But room to modernize
• Near-term goals: 300-level
• Longer-term possibilities: 400- and 500-level
• Questions for you
300-level today (8 required courses)
discrete
structures
Logic, proofs, sets,
combinatorics,
probability, …
300-level today (8 required courses)
discrete
structures
formal
models
finite automata, regexps,
context-free languages,
Turing machines
300-level today (8 required courses)
discrete
structures
formal
models
data
structures
big-O, balanced trees, heaps,
hashing, sorting, graph
algorithms, NP-completeness
300-level today (8 required courses)
discrete
structures
formal
models
programming
languages
data
structures
functional programming, static
vs. dynamic typing, modularity,
ML/Haskell, Scheme, Ruby
300-level today (8 required courses)
discrete
structures
formal
models
programming
languages
data
structures
digital
design
boolean algebra,
gates, binary
numbers, finite
automata, ALUs
300-level today (8 required courses)
discrete
structures
formal
models
programming
languages
digital
design
“303”
C, tools, “ethics”,
everything else
data
structures
300-level today (8 required courses)
discrete
structures
formal
models
programming
languages
data
structures
digital
design
“303”
architecture
assembly programming,
CPU design, caching,
pipelining
300-level today (8 required courses)
discrete
structures
formal
models
programming
languages
data
structures
digital
design
architecture
“303”
statistics
probability distributions,
regression, …
Many ideas forming
discrete
structures
formal
models
programming
languages
data
structures
digital
design
architecture
“303”
statistics
A new large, broad committee with many possibilities
– Reduce redundancy (finite automata, probability)
– Most formal automata to 400-level?
– PL to 400-level, replaced with functional-programming basics, more
modern programming, and a software project?
– More focus on using data structures?
– More focus on “big data”?
– Bring statistics “in house”? (course is widely disliked)
– Part of 303 to 1-credit labs taught by students?
– …
Outline
• Overview of current program
– Lots of good news
– But room to modernize
• Near-term goals: 300-level
• Longer-term possibilities: 400- and 500-level
• Questions for you
400-level
• Many courses, with varied enrollment (biased by 300 level)
–
–
–
–
–
–
–
–
O/S:
75-90%
Databases: 55-75%
Compilers: 30-55%
Graphics: 30-60%
Algorithms: 40-60%
Theory of computation: 15-25%
Embedded systems: 20-25%
Architecture: 5-10%
• “Flat”
– No time for follow-on courses
• Ideally 5th-year Master’s helps
• But only if funded at level to create new courses
– CS degree especially is “take 4 or 5 courses”
400-level possibilities
• “Tracks”?
– Just guidance and a credential?
– Or more specialized degrees?
• Better coordination for double-majors?
• Minors?
• Focus on Master’s level?
Outline
• Overview of current program
– Lots of good news
– But room to modernize
• Near-term goals: 300-level
• Longer-term possibilities: 400- and 500-level
• Questions for you
Your ideas, please
300-level:
1. How can our “core curriculum” better prepare our students?
– Senior-level, grad school, industry, double-majors, …
2. How does our “core curriculum” differ from our peers / “the field”?
3. How can a core-curriculum revision succeed?
– Pedagogically and diplomatically
4. Does computer science still have a core?
400-level:
5. Is allowing earlier/deeper specialization a good goal?
6. If so, how do we start to restructure?
Generally:
7. Have we chosen good areas for improvement?
8. What are our blind spots (questions not asked)?