University of Washington Computer Science & Engineering Curriculum Revision: Why, What, How* Dan Grossman University of Washington * Opinions expressed.

Slides:



Advertisements
Similar presentations
Standards Alignment A study of alignment between state standards and the ACM K-12 Curriculum.
Advertisements

Transitioning to Semesters CSE MS Program Prof. Gagan Agrawal Grad Studies Chair.
Parallel Programming in Undergraduate Education: A View from the Ground Dan Grossman University of Washington Workshop on Directions in Multicore Programming.
Cyber Education Project Accreditation Committee November 2014.
NSF/TCPP Early Adopter Experience at Jackson State University Computer Science Department.
© Copyright CSAB 2013 Future Directions for the Computing Accreditation Criteria Report from CAC and CSAB Joint Criteria Committee Gayle Yaverbaum Barbara.
Introductory Computer Science Courses Past experiences & thoughts Haakon Ringberg, Thomson Research Paris & Princeton University.
University of Washington Computer Science & Engineering Curriculum Revision: Why, What, How* Dan Grossman University of Washington * Opinions expressed.
Ready-For-Use: 3 Weeks of Parallelism and Concurrency in a Required 2 nd -Year Data-Structures Course Dan Grossman University of Washington 2010 Workshop.
Teaching Programming Language Design and Implementation: Perspective From Two Roles Dan Grossman PLDI Panel 2011.
CSE332: Data Abstractions Lecture 28: Course Wrap-Up / Victory Lap Dan Grossman Spring 2010.
CS 300 – Lecture 3 Intro to Computer Architecture / Assembly Language Digital Design II.
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
UGCC Report, 11/29/05 Committee: Bettati, Gutierrez, Keyser, Jiheon Kwan (undergrad rep), Leyk, Loguinov, Petersen, Welch (chair) Meetings: Fridays 2-3.
1 Foundations of Software Design Lecture 1: Course Overview Intro to Binary and Boolean Marti Hearst SIMS, University of California at Berkeley.
UMass Lowell Computer Science Analysis of Algorithms Prof. Karen Daniels Fall, 2001 Lecture 1 Introduction/Overview Wed. 9/5/01.
CS503: Tenth Lecture, Fall 2008 Review Michael Barnathan.
Report to External Review Board Brigham Young University Civil & Environmental Engineering October 14, 2005.
A-1 © 2000 UW CSE University of Washington Computer Programming I Lecture 1: Overview and Welcome Dr. Martin Dickey University of Washington.
CSCD 330 Network Programming Winter 2012 Lecture 1 - Course Details.
July 16, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
Introducing Parallelism and Concurrency in the Data Structures Course Dan Grossman Ruth E. Anderson University of Washington
The Influence of the University/College/Department Mission How your university and department’s missions influence your engineering degree requirements.
“Project Based” Learning in Secondary Science Patrick Wells Presentation site:
COMP 151: Computer Programming II Spring Course Topics Review of Java and basics of software engineering (3 classes. Chapters 1 and 2) Recursion.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP.
CSE332: Data Abstractions Lecture 26: Course Victory Lap Dan Grossman Spring 2012.
IT 499 Bachelor Capstone Week 8. Adgenda Administrative Review UNIT Seven UNIT Eight Project UNIT Nine Preview Project Status Summary.
1 A Simple but Realistic Assembly Language for a Course in Computer Organization Eric Larson Moon Ok Kim Seattle University October 25, 2008.
Dr. John Lowther, Associate Professor of CS Adjunct Associate Prof. of Cognitive and Learning Sciences Computer Graphics:
Hello World! CSE442. Course Summary A semester long group project – You will develop software from idea to implementation You have full freedom to choose.
Welcome to PSU Computer Science! Unabridged Advice and Answers for Postbac Students Interested In Computer Science Warren Harrison, Department Chair Barbara.
Welcome to PSU Computer Science! Unabridged Advice and Answers for Postbac Students Interested IN Computer Science Warren Harrison, Chair Barbara Sabath,
CEN Program Focus Group TOPICS: –Suggestions for the CEN program. –CEN program Overhaul 1.
ECE 1100: Introduction to Electrical and Computer Engineering Wanda Wosik Associate Professor, ECE Dept. Notes 1 Spring 2011 Slides adapted from lectures.
CMSC 2021 CMSC 202 Computer Science II for Majors Fall 2002 Mr. Frey (0101 – 0104) Mr. Raouf (0201 – 0204)
Course Introduction CSE250. Course Overview This course will be difficult Work hard and start early You are adults and I will treat you as such – I won’t.
Introduction to ECE 2401 Data Structure Fall 2005 Chapter 0 Chen, Chang-Sheng
CMSC104 Problem Solving and Computer Programming Spring 2011 Section 04 John Park.
Introducing Every CS Major to Parallel Programming: Baby Steps at Ohio State Gagan Agrawal Feng Qin P. Sadayappan.
Early Adopter: Integration of Parallel Topics into the Undergraduate CS Curriculum at Calvin College Joel C. Adams Chair, Department of Computer Science.
A-1 © 2000 UW CSE University of Washington Computer Programming I Lecture 21: Course Wrap-up and Look Ahead.
Multi-Semester Effort and Experience to Integrate NSF/IEEE-TCPP PDC into Multiple Department- wide Core Courses of Computer Science and Technology Department.
There are only 10 different kinds of people in the world: those who know binary and those who don't. - Anonymous.
CMSC 2021 CMSC 202 Computer Science II for Majors Spring 2002 Sections Ms. Susan Mitchell.
CSCD 330 Network Programming Winter 2015 Lecture 1 - Course Details.
CMSC 2021 CMSC 202 Computer Science II for Majors Spring 2001 Sections Ms. Susan Mitchell.
CMSC 2021 CMSC 202 Computer Science II for Majors Spring 2003 Mr. Frey (0101 – 0104) Mr. Raouf (0201 – 0204)
CSE Undergraduate Curriculum: Where we are / Where we might go Dan Grossman Assistant Professor, 2003-present Curriculum Revision Co-Chair, 2009.
Data Structures and Algorithms in Java AlaaEddin 2012.
Course Introduction David Ferry, Chris Gill Department of Computer Science and Engineering Washington University, St. Louis MO 1E81.
Principles of Imperative Computation Lecture 1 January 15 th, 2012.
Pre-registration Information Andrew Brewick Director of Academic Advising.
1 Computer Science 1021 Programming in Java Geoff Draper University of Utah.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
Changing Your Life with a Career in Computing
CS6501 Advanced Topics in Information Retrieval Course Policy
Final exam: Wednesday, March 20, 2:30pm
CSE 374 Programming Concepts & Tools
CS Undergraduate Advisor
Computer Science Department
University of Washington Computer Programming I
Computer Science Department
The CS Undergrad Curriculum of 2017: My Biased View from Academia
* 312 Foundations II 332 Data Abstractions 311 I 351 Hw/Sw Interface
CSE 331 Software Design & Implementation
26 July 2011 SC 611 Class 1.
Computer Science Department
Presentation transcript:

University of Washington Computer Science & Engineering Curriculum Revision: Why, What, How* Dan Grossman University of Washington * Opinions expressed are the personal opinions of the presenter

Executive Summary Rolled out a major restructuring/modernization of “300-level” –First systematic revision in decades –30% different material, rest reshuffled –More flexible: fewer courses everyone takes What: The old curriculum and the new Why: Adapt to a changing field, better support specialization How: The mechanics and “diplomacy” of pulling this off Format: Ask questions to focus on what you want –For better or worse, I know this stuff in my sleep October 4, 20112Dan Grossman: UW CS&E Curriculum

Context A quick program/curriculum overview to put our 300-level in context… October 4, 20113Dan Grossman: UW CS&E Curriculum

Program Outline 170 graduates a year –Computer Engineering (College of Engr.) (1/3) ABET accredited Recently eliminated HW vs. SW “tracks” –Computer Science (College of Arts&Sciences) (2/3) More senior-level flexibility −(Very) Competitive department admissions 300-level courses shown today open only to majors Eliding other things like: −Separate upper-level courses for non-majors −ACMS degree −100-level web programming −… October 4, 2011Dan Grossman: UW CS&E Curriculum4

Curriculum overview October 4, 20115Dan Grossman: UW CS&E Curriculum CS142 CS143 “300-level” “400-level” capstone design Pertinent detail: Quarter system = 10-week courses 3 terms / year

Not on the table: intro CS142: –Variables, conditionals, loops, arrays, methods, I/O, … –2000 students / year at UW Seattle –12% become majors –Also taught at community colleges, etc. –(Java with “objects late”) October 4, 20116Dan Grossman: UW CS&E Curriculum CS142 CS143

Not on the table: intro CS143: –Recursion, linked lists, binary search trees, OOP, … –900 students / year at UW Seattle –25% become majors –Also taught at community colleges, etc. –(Java) October 4, 20117Dan Grossman: UW CS&E Curriculum CS142 CS143

Not on the table: 400-level Junior/Senior year: Basically one course per “area” October 4, 20118Dan Grossman: UW CS&E Curriculum CS142 CS143 “300-level” “400-level” capstone design

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% –… (many many more) Basically “flat” October 4, 2011Dan Grossman: UW CS&E Curriculum9

300-level The 300-level should “bridge” 143 to the 400-level, emphasizing the core principles of computing and preparing students regardless of later interests/specialization A lot must happen between week 20 of programming and CSE4xx Note: Various degree requirements and options omitted to tell a “simple story” that fits on slides October 4, Dan Grossman: UW CS&E Curriculum

The old way… 326 Data Structures 321 Discrete Math 370 Digital Design 378 Architecture, Assembly 341 Programming Languages 322 Formal Models 303 C, tools, unix ethics STAT 390 or STAT391 EE 215 Intro EE EE 233 Frequency, Power, … October 4, 2011Dan Grossman: UW CS&E Curriculum11 required CompE required pre-req CompE hardware required MATH 308 Linear Algebra Other Dept.s

The old way… 326 Data Structures 321 Discrete Math 370 Digital Design 378 Architecture, Assembly 341 Programming Languages 322 Formal Models 303 C, tools, unix ethics STAT 390 or STAT391 EE 215 Intro EE EE 233 Frequency, Power, … October 4, 2011Dan Grossman: UW CS&E Curriculum12 required CompE required pre-req CompE hardware required MATH 308 Linear Algebra Other Dept.s logic, proofs, sets, counting, discrete probability, … big-O, balanced trees, heaps, hashing, sorting, graphs, … functional programming, static vs. dynamic typing, modularity, ML, Scheme, Ruby, … hw labs, Boolean algebra, gates, binary numbers, finite automata, ALUs, … C, tools, “ethics”, everything else, … more hw labs, assembly, CPU design, caching, pipelining, … finite automata, regexps, context free languages, undecidability, …

What was “wrong”? Before I answer that, I should be clear: Our students were happy and doing great things! 34 CRA ugrad research awards, 5 Goldwaters several/year to top PhD programs Great alumni contact Post-graduation plans for graduates (of 83% known) –34% to Microsoft + Amazon + Google –30% to small companies, most in the Seattle area –14% to other big companies –9% to our own 5 th -year Masters –8% to other graduate programs –5% other October 4, Dan Grossman: UW CS&E Curriculum

What was “wrong”? But no cross-course innovation in years –Material seemed outdated and uncoordinated Pushdown automata are great, but required at 300-level? Teaching Boolean Algebra twice “The field has grown” “Programming has changed; we haven’t” “We were teaching this course before Nixon resigned” Saw other departments (Stanford, Cornell, Georgia Tech, …) revising while we were failing too October 4, Dan Grossman: UW CS&E Curriculum

Some key changes Goal in two buzzwords: modernize and streamline –Allow for specialization without requiring it –Respond to a growing field while staying a 4-year program Three months in, realized two degrees of freedom: 1.Non-identical “cores” for Comp. Sci. and Comp. Engr. –Fields have changed since Optional but highly enrolled 300-level courses –Aim for, say, 80% of majors in each October 4, Dan Grossman: UW CS&E Curriculum

Crossing a line A key perspective: Identify the concepts the faculty would be embarrassed having a graduate of your department not know There would be no room left for electives/specialization! So it’s okay to have some of the “embarrassed list” in courses that only 70% of our students take –Differentiate “almost everyone ought to” and “required” October 4, Dan Grossman: UW CS&E Curriculum

312 Foundations II 332 Data Abstractions 311 Foundations I 351 Hw/Sw Interface 352 Hw Design / Impl EE205 Signal Conditioning 341 Programming Languages required CompE required STAT391 October 4, 2011Dan Grossman: UW CS&E Curriculum17 MATH308 Linear Algebra not required pre-req co-req or pre-req 390A Tools Other Dept.s 331 Sw Design / Impl 333 Systems Programming 344 Data Management CS required bits, binary numbers, assembly, C, pointers, caching, connection to Java, … linux, bash, make, grep, svn, … (1-credit, pass/fail, taught by senior/grad) 70% data structures: big-O, trees, heaps, hashing, sorting, graphs 30% threads, parallelism, concurrency 70% discrete probability / statistics in computing (counting, Bayes, …) 30% P vs. NP and NP-completeness Using a DBMS, web-scale data, MapReduce non-trivial C/C++ programming, programming for performance, asynchronous I/O, … logic, proofs, sets, unclocked circuits, finite state machines, undecidability, … (unchanged but no longer required  ) functional programming, static vs. dynamic typing, modularity, ML, Scheme, Ruby, … hardware, lab-focused Circuit design (some) CPU design (lots) Embedded systems software design, testing, APIs, specs, debugging, teamwork, (Java), …

Laundry list of changes 3 fewer required 300-level courses –But other 3xx offered 1-2x/year and same total course count Foundations I better serves CompE (circuits, FSMs) Undecidability (e.g., halting problem) without Turing Machines Software design course mostly new material (!) HW/SW interface connects Java to the bits, without a hw lab One hw lab course after they know some C and assembly –More emphasis on systems integration, less on CPU design? Threads, parallelism, concurrency in data structures Proper treatment of P vs. NP and NP-completeness No context-free grammars, NFAs, etc. More discrete probability “in house” Separate 1-credit “no intellectual content” course New courses for systems programming, big data October 4, Dan Grossman: UW CS&E Curriculum Nothing here is revolutionary But adds up to a big change −Mitigated by 4xx evolution Do “all at once” because pieces fit together and everyone gives up something

A little deeper on 332 Many people have worked hard to bring new courses to life –“The committee” made 2-3 pages descriptions for each course, which leaves much to-be-determined I took on threads/parallelism/concurrency in data structures –Leveraging personal interests I am very happy with the results and am now advertising my teaching materials –Example: workshop at the SIGCSE Conference, March 2011 –So please indulge a few minutes of focus on one course… October 4, Dan Grossman: UW CS&E Curriculum

Why threads early? Multicore is here, blah, blah There are core computing concepts related to multiple things happening at once –Senior-level O/S is too late –No need to do in C, just as no need to do intro in C It’s hard: want an early exposure re-enforced in later courses Increasingly common: want some shared knowledge that 4xx courses in O/S, networks, graphics, PL, databases, architecture, etc. can build on October 4, Dan Grossman: UW CS&E Curriculum

Parallelism vs. Concurrency Parallelism: Using extra computational resources to solve a problem faster October 4, Dan Grossman: UW CS&E Curriculum resources Concurrency: Correctly and efficiently managing access to shared resources requests work resource

332 Old vs. New Old and new: 20 lectures Big-Oh, Algorithm Analysis Binary Heaps (Priority Qs) AVL Trees B Trees Hashing Sorting Graph Traversals Topological Sort Shortest Paths Minimum Spanning Trees Amortization October 4, 2011Dan Grossman: UW CS&E Curriculum22

332 Old vs. New Old and new: 20 lectures Big-Oh, Algorithm Analysis Binary Heaps (Priority Qs) AVL Trees B Trees Hashing Sorting Graph Traversals Topological Sort Shortest Paths Minimum Spanning Trees Amortization October 4, 2011Dan Grossman: UW CS&E Curriculum Removed: 8 lectures D-heaps Leftist heaps Skew heaps Binomial queues Splay trees  Disjoint sets  Network flow Hack job on NP (moves elsewhere) 23

332 Old vs. New Old and new: 20 lectures Big-Oh, Algorithm Analysis Binary Heaps (Priority Qs) AVL Trees B Trees Hashing Sorting Graph Traversals Topological Sort Shortest Paths Minimum Spanning Trees Amortization October 4, 2011Dan Grossman: UW CS&E Curriculum Added: 8 lectures Multithreading Basics (1) Fork-Join Parallelism (3) Reductions, Prefix, Sorting Parallelism Analysis Amdahl’s Law Concurrency (4) Races, deadlocks Locks (mostly) Condition variables (a bit) Programming guidelines (!) 24

Divide-and-conquer fork-join parallelism October 4, Dan Grossman: UW CS&E Curriculum Concepts already in the course: Divide-and-conquer Sequential cut-off to eliminate most recursion (constant factors) Balanced trees have logarithmic height Easy-ish to implement (“manually”) in Java’s ForkJoin Framework

Lock-based shared-memory concurrency Many topics (locks, data races, etc.) with thread-safe ADTs as the canonical examples –Students get good at finding bad interleavings October 4, Dan Grossman: UW CS&E Curriculum E ans = pop(); push(ans); return ans; push(x) push(y) E e = pop() Time Thread 2 Thread 1 ( peek )

What I’ve got 65 pages of reading notes for students (and instructors!) PowerPoint Homework problems Java ForkJoin for beginners Programming project Sample exam problems October 4, Dan Grossman: UW CS&E Curriculum

Now for how Maybe you’re thinking: Gee this sounds swell, but I haven’t a clue how to organize such a revision or how to get the necessary broad department support Let me give you: –Our timeline and how we approached the key pieces –My take on the diplomacy issues “Your mileage may vary,” but I’ve found very similar comments when comparing “war stories” with colleagues elsewhere October 4, Dan Grossman: UW CS&E Curriculum

Timeline overview, part 1 Pre-2008: A failed prior attempt Fall 2008: Stuart Reges and I agree to co-chair, do groundwork Jan-Mar 2009: Weekly open-committee meetings and department s, focusing on broad structure and goals –End of February: Full faculty meeting Apr-Jun 2009: Weekly open-committee meetings and department s, focusing on specific courses –Eventually 2-page docs for each, drawing in experts June 2009: Key faculty meeting, vote “in principle” modulo concerns, with details and degree requirements TBD –Also meeting with current students but won’t affect them Summer 2009: I work out the details with key experts –Including transition plan for students caught in the middle October 4, Dan Grossman: UW CS&E Curriculum

Timeline overview, part 2 October 2009: –Sanity check with 5 seniors (leads to Tools course) –Report back to faculty two weeks prior to vote (meeting #3) –Final vote (meeting #4), university approval etc. –Instructors for Spring 2010 courses identified Spring 2010: 5 new courses Fall 2011: 2 more new courses (1 should have been Winter) Spring 2011: Final 2 new courses (1 should have been Winter) : Quarterly “hand-off” meetings with past/future instructors of new courses, one full faculty meeting status report : 4xx courses have to handle students from old and new –And tracking requirements for 80 transition students a pain October 4, Dan Grossman: UW CS&E Curriculum

The story behind the story I think “Part 2” is a lot of work, but reasonably straightforward –Biggest need is finding the best “first instructors” –Biggest mistakes have been transition course schedule, leading to a couple too-small courses So let’s revisit “Part 1” with the “Director’s Track”… –While we got a lot right, also “hindsight is 20/20” October 4, Dan Grossman: UW CS&E Curriculum

Pre-2008: A failed prior attempt Fall 2008: Stuart Reges and I agree to co-chair, do groundwork Jan-Mar 2009: Weekly open-committee meetings and department s, focusing on broad structure and goals –End of February: Full faculty meeting Apr-Jun 2009: Weekly open-committee meetings and department s, focusing on specific courses –Eventually 2-page docs for each, drawing in experts June 2009: Key faculty meeting, vote “in principle” modulo concerns, with details and degree requirements TBD –Also meeting with current students but won’t affect them Summer 2009: I work out the details with key experts –Including transition plan for students caught in the middle Timeline overview, part 1 October 4, Dan Grossman: UW CS&E Curriculum Honestly, a key reason we succeeded Understood as the last chance Understood it’s hard but important Learned all about old curriculum −Lead from expertise Held 10ish 1-1 meetings −Incredibly important diplomacy and understanding of key perspectives in advance Transparency and communication! −Anyone welcome on committee or to drop in on meetings − to full faculty agenda and notes afterward −Respond to every −Web site with full archives −Never quite stated: silence is consent Faculty meeting #1 Nothing set in stone, no vote Where things headed Let people hear that broad faculty has many different goals, not conflicting but can’t all be met 2-3 page description per course Need smaller working groups (2-5) Figure out who will actually do it Make a straw-man to drive progress Meeting and vote is essential Means “promise not to start over if details flesh out reasonably” Lots of 1-1 discussions (and some whip- counting) in advance Two hours of discussion helps see substantial re-changes unlikely Treat concerns as summer marching orders Degree requirements are trickier than I thought Find the resident experts, listen and learn Figure out transition and roll-out Thankless work, but don’t screw it up!

Some more success strategies Caveat: These particular tricks align with my personal style October 4, Dan Grossman: UW CS&E Curriculum Work harder than anybody expected −And make the work visible Seek out informal input from everyone you can Favor the opinions of those who do the work Fall on your personal sword early and often −Helps for department chair to also Settle for making everyone equally unhappy −People who feel treated fairly are supportive When a big flare-up on something happens, work through it without panic −Still don’t understand why 7 vs. 10 weeks on topic X was such a deal Final vote (faculty meeting #4) “up or down” after 10 months for feedback

Learn more? I can share: –The 2-page documents –The new degree requirements –The new course’s home pages, catalog descriptions, etc. –All the information posted for our students, etc. But honestly, those were designed for internal consumption –For an overview for “outsiders,” uhm, that’s this presentation Acknowledgments: Many people thought and worked hard on this – deep input from over half the faculty, ten instructors for new/revised courses, etc. I do not deserve all the credit! October 4, Dan Grossman: UW CS&E Curriculum

312 Foundations II 332 Data Abstractions 311 Foundations I 351 Hw/Sw Interface 352 Hw Design / Impl EE205 Signal Conditioning 341 Programming Languages required CompE required STAT391 October 4, 2011Dan Grossman: UW CS&E Curriculum35 MATH308 Linear Algebra not required pre-req co-req or pre-req 390A Tools Other Dept.s 331 Sw Design / Impl 333 Systems Programming 344 Data Management CS required