University of Washington - CSE
1
Agenda (54 slides in one hour)
New curriculum recap; where we are now (5 min) – Dan
CSE311: Foundations of Computing I (8 min) – Martin CSE331: Software Design and Implementation (8 min) – Mike CSE332: Data Abstractions (8 min) – Dan CSE351: The Hardware/Software Interface (8 min) – Gaetano CSE390A: System and Software Tools (4 min) – Marty
Next steps (5 min) – Dan Career tracks (6 min) – Dan ABET process to start in fall (8 min) – Gaetano
University of Washington - CSE
2
Timeline Jan-May 2009: Weekly meetings, emails May 2009: “Approval in principle” October 8, 2009: Faculty approval
Spring 2010: 4.25 new courses Martin, Mike, Dan, Gaetano Plus Marty/student in 390A Turn 2-3 page overviews into 4-credit courses! Taught each quarter henceforth
AY 2010-2011: 4 more new courses 2 in Fall, 2 in Spring And flush old pipe: 1x322, 2x378
Fall 2010 – Spring 2013: 4xx students with old & new 3xx 4xx instructors should start planning now: talk to us!
University of Washington - CSE
3
312Foundations
II
332Data
Abstractions
311Foundations
I
351Hw/Sw
Interface
352Hw Design /
Impl
SignalConditioning
(EE)
344Data
Management
341Programming
Languages
required
CS & CompEsoftware required
CompE required
not required
pre-req
co-req or pre-req
STAT391
331Sw Design /
Impl
333Systems
Programming
CompE hardwarerequired
University of Washington - CSE
4
Who is worried about what? Students & advisors: Degree requirements, especially in
transition
Faculty: What we are teaching at the 300-level As 400-level instructors:
May need “extra meeting with TA” due to “transition gap” Permanent adjustment (“10-15%”) to new 300-level
As 300-level instructors: for consistency and improvement Needs to remain reorganized and more modern Consistency has some inherent value
– But of course we learn from experience Instructors for each course should meet! (I can help)
30 minutes from now: What else the students need from you
University of Washington - CSE
5
For more information
Today’s presentations focus on individual courses
For additional background and relevant links:
www.cs.washington.edu/homes/djg/curriculum_overview_for_faculty.html
(Feedback welcome)
University of Washington - CSE
6
Courses
University of Washington - CSE
7
CSE 311: Foundations of Computing I
Goals Understand the discrete math underlying all of CSE Develop ability to reason correctly Develop ability to follow and construct proofs
University of Washington - CSE
8
Topics Logic Basic proof techniques Sets, functions, and relations Basic number theory Induction proofs Graphs: just the definition Combinational circuits Finite-state machines Computability
311 = 321 – {counting, graph theory} ⋃ {circuits, finite-state machines,
computability}
Good media for simple proofs
Used in: 312 352312 332312 331 332
332312 331 332312 331 332
352352
312
(mod arith., primes, RSA)
University of Washington - CSE
9
Lessons What works
Topics build nicely on each other Proofs are simple enough that students learn a rigorous style RSA cryptosystem as a fun application of number theory Tantalizing references to fame via topical open problems
What doesn’t work Like 321:
Too many topics, necessarily covered superficially Difficult to motivate (“Trust me, you’ll need this next year.”) Difficult to retain (“Too bad you’ll have forgotten it by next year.”)
Textbook: Rosen, Discrete mathematics and its applications Applications weak, examples and exercises contrived and boring New edition every couple years, with material shuffled Expensive
University of Washington - CSE
10
CSE 331: Software Design & Implementation
Goal: Enable students to manage complexity ensure correctness write small programs
University of Washington - CSE
11
CSE 331 topics Manage complexity:
Abstraction Specification Modularity Program design/organization Sub-typing Documentation
Ensure correctness: Reasoning Testing Debugging
Write programs: Practice and feedback Introduction to: software process, requirements, usability, teamwork,
understanding libraries
University of Washington - CSE
12
Teaching tools
Learn by doing realistic tasks avoid indirect measures of competence give opportunities to fail and to succeed
"Re-turnin" after TA feedback, debug and re-submit assignments all-or-nothing grading on resubmission motivates documentation, testing, debugging, reasoning
Cross-checking of tests run each student's tests against each student's code
Weekly programming assignments build to a single project less and less scaffolding each week see a bigger system, use design patterns be proud of a result
University of Washington - CSE
13
What worked Lecture material / topics
relevant to jobs mostly new to CSE
Readings Effective Java Pragmatic Programmer handouts (need more)
Rigor students really “get” the material much faster completion times on subsequent tasks
Use of research tools
University of Washington - CSE
14
Growing pains Students were not prepared Assignments took too much time
The plan six 1-week assignments one 3.5-week group project
Change of plan canceled the project added two assignments
In the future: easier problem set sequence, or cancel the project
Students under-used the TAs A 55-person class is not efficient
University of Washington - CSE
15
CSE332: Data Abstractions
Catalog Description:Abstract data types and structures including dictionaries, balanced trees, hash tables, priority queues, and graphs; sorting; asymptotic analysis; fundamental graph algorithms including graph search, shortest path, and minimum spanning trees; concurrency and synchronization; and parallelism.
Goals: Deep understanding of core data-structure trade-offs Fluency with asymptotic complexity, exponentials, etc. Ability to analyze correctness (?) and efficiency Recognizing basic opportunities for parallelism Addressing challenges of concurrent access to resources
University of Washington - CSE
16
Topics: Data structures + Threads
326 & 332 (20 lectures)Big-Oh, Algorithm AnalysisBinary Heaps (Priority Qs)AVL TreesB TreesHashingSortingGraph TraversalsTopological SortShortest PathsMinimum Spanning TreesAmortization
University of Washington - CSE
17
Topics: Data structures + Threads
326 & 332 (20 lectures)Big-Oh, Algorithm AnalysisBinary Heaps (Priority Qs)AVL TreesB TreesHashingSortingGraph TraversalsTopological SortShortest PathsMinimum Spanning TreesAmortization
Removed from 326 (8 lectures)D-heapsLeftist heapsSkew heapsBinomial queuesSplay treesDisjoint setsNetwork flowHack job on NP (moves to CSE312)
University of Washington - CSE
18
Topics: Data structures + Threads
326 & 332 (20 lectures)Big-Oh, Algorithm AnalysisBinary Heaps (Priority Qs)AVL TreesB TreesHashingSortingGraph TraversalsTopological SortShortest PathsMinimum Spanning TreesAmortization
Added to 332 (8 lectures)Multithreading Basics (1)Fork-Join Parallelism (3)
• Using Java library• Analysis: T1 and T • Amdahl’s Law• Reductions, Prefix, Sorting
Concurrency (4)• Races, deadlocks• Locks (mostly) • Condition variables (a bit)• Programming guidelines (!)
University of Washington - CSE
19
What works
Triage 30% without killing the patient Plus pretty deep scrub of other 70% Projects use more modern Java (generics, iterators, JUnit) Still keystone course with algorithms, code, proofs, and charts
Parallelism and concurrency in this course Natural fit (!): same notion of trade-offs, asymptotics
Example: Sequential cut-off Example: Bounded buffer for condition variables Example: Amdahl’s Law in the limit
Data structures & algorithms are canonical examples Divide-and-conquer, atomic operations, etc.
All at the Java / pseudo-code level
University of Washington - CSE
20
What might not work
No textbook for parallelism and concurrency (no complaints?)
Aimed for “teachable by others,” but never quite sure
1.5 / 3 new projects and lots of new slides No disasters, but could use some sanding
Due to project scheduling, graphs in weeks 6 and 10
Did not fit: map/reduce, declarative queries Leave to (optional) CSE344
University of Washington - CSE
21
CSE351 – The Hardware/Software Interface How does the hardware (0s and 1s, processor executing
instructions) relate to the software (Java programs)? Programmer’s perspective on computing system abstractions
What are these abstractions and what does a programmer need to know? What bugs can they cause and how do you find them? What tradeoffs are being made that may change for a new technology?
Key abstractions How to represent data in bits Mappings, stacks, bookkeeping Locality and caching Processes and virtual memory High-level language support
CSE351
CSE451Op Systems
CSE401Compilers
Concurrency
CSE333Systems Prog
Performance
CSE484Security
CSE466Emb Systems
CS 143Intro Prog II
CSE352HW Design
Comp. Arch.
CSE461Networks
MachineCode
DistributedSystems
CSE477/481Capstones
Execution Model
Real-TimeControl
University of Washington - CSE
22
The three “little” themes of CSE351 Representation
Numbers, characters, strings, addresses,pointers, data structures, …
Memory organization, virtual memory Translation
Java/byte-codes, C/assembly, machine code
How do we move between them?
Control Flow Stack discipline Illusions of parallelism Interrupts, traps, faults
University of Washington - CSE
23
Outcomes Understand implementations details of some important abstractions
E.g., caching (caches, virtual memory, TLBs) E.g., stacks (parameter passing, return values, recursion) E.g., high-level (Java) vs. low-level languages (C) vs. assembly language
Become more effective programmers More efficient at finding and eliminating bugs (heavy use of GDB, both asm and C) Understand some of the many factors that influence performance
Programming assignments Manipulate number representations (manipulate number representations in C) Defuse a bomb by disassembling a program (read assembly code) Implement stack overflow exploits (write assembly code) Implement malloc and free (in C)
Written assignments (problems from text) numbers, compilation, caches, virtual memory
University of Washington - CSE
24
Lessons What seemed to work
Textbook: Computer Systems, A Programmer’s Perspective Bryant / O’Halloran and wonderful complete set of materials
Choice of topics to cover (some tweaking required) Reasonable workload for a quarter
Teaching C as a more readable assembly language Java as an example of a high-level language
Practical work on each of the key concepts representation, translation, and control flow
Alternating programming and written assignments Using attu for all the programming (single environment to get right)
What could improve 3-hour weekly lab: one hour review/discussion, two hour practicum
Learn how to use tools together (Linux, GDB, disassembler, etc.) I’m sure we’ll hear a lot more from student evaluations
University of Washington - CSE
CSE 390A: System and Software Tools
Major Topics setting up and navigating a Unix/Linux environment connecting to remote servers and using multi-user shared Unix systems permissions, groups, and users using a Unix command-line shell Unix file system; file/directory management; process management pipes and redirection string and text processing basics: filtering, substituting, etc. regular expressions and related tools Bash shell scripting compiling/executing programs from a command line;
compilation management tools (make, ant) version control basics (subversion)
25
University of Washington - CSE
26
CSE 390A Example assignment tasks hw1 (basics): Basic Unix commands: Copy/list/rename/delete/view files hw2 (basics 2): More Unix commands; Combining commands with > < | hw3 (attu): Connect to the attu server; examine processes/users/etc. hw4 (users/groups): Set a group of files to have particular permissions. hw5 (shell scripts): mantra (repeated text), filestats (print file info) hw6 (Bash scripts): A grading script that diffs/scores student programs. hw7 (regexes): Find all words in /usr/share/dict/words that match a
given pattern (example: strings of at least 5 vowels in a row). hw8 (make): Download/compile/run open source software using make.
Write a Makefile and an Ant build.xml file. hw9 (svn): Check out contents of a known SVN repo, make changes,
add files, and check them in. Create a SVN repo with given properties.
Quick reflections bad: Limited help; only 1 lecture/week; easy to make it too hard/long good: TA Josh Goodwin; student HW eval surveys; loose collab. policy
26
University of Washington - CSE
27
Next steps
University of Washington - CSE
28
312Foundations
II
332Data
Abstractions
311Foundations
I
351Hw/Sw
Interface
352Hw Design /
Impl
SignalConditioning
(EE)
344Data
Management
341Programming
Languages
required
CS & CompEsoftware required
CompE required
not required
pre-req
co-req or pre-req
STAT391
331Sw Design /
Impl
333Systems
Programming
CompE hardwarerequired
University of Washington - CSE
29
Next year
CSE312: Foundations of Computing II Counting, probability, properties of random variables Applications, central-limit theorem, statistics P, NP, NP-completeness
Fall: Lee, Winter: Ruzzo, Spring: Domingos
To be determined: Lots, including working with STAT to evolve STAT391 to be complementary
University of Washington - CSE
30
Next year
CSE352: Hardware Design & Implementation Lab-intensive course Circuit-design, processor-design, and systems integration
Uhm, obviously not too much of any one Lean on CSE351 and CSE311 for quick start
Fall: Ebeling, Spring: Hemingway
To be determined: Lots, may use same book as CSE351 (?)
University of Washington - CSE
31
Next year
CSE333: Systems Programming
Still working out how to describe the goals of this course: it has aspects of teaching C/C++ programming also aspects of teaching systems-software issues like
performance, caching, and asynchrony
Optional for most students, but recommended for 400-level courses that are C and/or systems-level
Spring: Gribble
University of Washington - CSE
32
Next year
CSE344: Introduction to Data Management
Currently many students are taking CSE444 databases because they want to use databases or manage large data sets CSE344 will meet a growing need and let CSE444 be more about
database design/implementation
Spring: Suciu
University of Washington - CSE
33
Lots of thank-yous and a segue… Hundreds (thousands?) of hours of thought and discussion 8 faculty teaching a course that’s never been taught before Paul figuring out a stranger-than-usual teaching schedule Advisors getting students into the right place …
All part of a much more flexible major
In fact, a little too flexible for students who need guidance…
University of Washington - CSE
34
Advice from faculty
Our students have very diverse interests and career goals The advice each student needs is varied and unlimited
But that’s no excuse for not having rough guidelines:“If you want to do X after you graduate, then course Y is especially important.”
What we provide today: Degree requirements: and they just got more flexible Results from a 12-person, 5-minute survey at Affiliates’ Day Our advisors’ best guesses Nothing from faculty (frankly not doing our job for most students)
Some day we’ll have “tracks”, but we need advice first
University of Washington - CSE
35
Current Students
University of Washington - CSE
36
Information for Current Undergrads
University of Washington - CSE
37
Career Information
University of Washington - CSE
38
Course Planning forSpecificCareers
University of Washington - CSE
39
University of Washington - CSE
40
One example: Hardware Designer
good enough great, but
some too genericbizarremish-mash
University of Washington - CSE
41
What we need A new web page with advice from faculty
Organized similarly Revised list of career paths (about 15, not all possible) List of highly recommended courses List of other recommended courses
Plus an “outlet” for other advice not specific to a career path
The plan: Huddles give us raw data from a simple template Deadline: July 15 We’ll collate, fill in gaps however I want , and web-ify
University of Washington - CSE
42
Career paths
Current listBackend DeveloperEmbedded Systems DeveloperGame DeveloperHardware DesignerProject/Program ManagerQA / Test EngineerSoftware EngineerSystems OperatorTechnical WriterTest EngineerWeb / Internet App DeveloperUI Designer
Missing?Data Miner?Computational Biologist?Security?Ph.D. student…
But: • I don’t want one career path per
faculty member• What to do to be a PL faculty
member doesn’t belong here
University of Washington - CSE
43
Course advice Highly recommended = a course people in the field all need
No such thing as “too obvious” (e.g., 440 for UI design)
Other recommended = definitely important, but remember students take 4-9 400-level courses total and need flexibility Making it too long dilutes influence
What I don’t want here: generic or biased advice! I think everyone ought to take compilers, but that’s my personal opinion,
which doesn’t belong in guidelines that line up careers with courses
University of Washington - CSE
44
Outlet
Conjecture: Faculty are incapable of restraining themselves from generic advice outside of the template
Conjecture: Sharing generic advice would be a great help to students
So: I’ll also make a “general advice” web page Initial state: Whatever any huddle sends me, lightly edited Pre-publish: Call for faculty input / discussion Guideline: Anything “controversial” gets removed
This ought to be the stuff so obvious we’re surprised it needs saying. Example: Technical writing/presentations
University of Washington - CSE
45
Next steps (1) A long email with instructions and an example template (2) You find 1 hour to look over our course list and fill out the
template with colleagues Should work fine over email Email me the output and I’ll iterate with you a bit
(3) When nobody does (2) , I do it all myself and then you complain about the results Go to step (2)
(4) Web-site up by start of Fall Quarter
Thank you!
University of Washington - CSE
46
ABET
University of Washington - CSE
47
ABET Accreditation Board for Engineering and Technology Accredit our Computer Engineering Program
As well as all other BS degrees in CoE Six year cycle (last site visit was 2007)
Fall of 2013 will be next visit to UW Believe it or not, it is time to get ready again
Lots to do over next 3 years – need to start now Document our improvements and feedback cycle Collect evaluation materials from our courses Prepare new self-study Big opportunity and lots of work because of our new
curriculum
University of Washington - CSE
48
Major changes since last visit New CompE requirements, some more to come New undergraduate core curriculum at 300-level
These will require Documenting why we did it, how well it is working
Student focus groups? Document course iterations and why? Mapping new curriculum to ABET outcomes
We are in flux and may need multiple maps
University of Washington - CSE
49
Weaknesses Multi-disciplinary teams (criterion d) Especially ethics and societal implications (criterion f) Knowledge of contemporary issues (criterion j)
High work-to-credit ratio in many of our courses Better documentation of feedback loops Better documentation of input from stakeholders
University of Washington - CSE
50
Curriculum to Outcome Mapping
University of Washington - CSE
51
Assessment Matrix
University of Washington - CSE
52
Coming changes to CompE degree Single track, easier advising,
less requirements, more like CS
University of Washington - CSE
53
Better use of capstones Make capstone more inter-disciplinary
Animation, CompBio, ICTD, UrbanSim, already do this… Specific uniform requirements for capstones
Should we have ABET-compliant capstones? Additional project courses that are not?
We do NOT document well what happens in each Produce more videos to highlight student’s work
Video ‘poster sessions’ Many more uses than ABET
Parents, recruiting, historical archive
University of Washington - CSE
54
Materials collection More and more coursework is on-line (paperless) Should we prepare an on-line system?
Easier to check completeness Make it more clear what needs to be assessed More use of surveys/questionnaires (not just end-qtr) Allow ABET evaluators to browse on-line