An Integrated Approach to Teaching Computing Systems Architecture Kishore Ramachandran & Bill Leahy College of Computing Georgia Institute of Technology Outline • Traditional approach • Pedagogy of new approach • Where does it fit and how do we put it in practice? • Experience at Tech • Evaluating the pedagogy • Challenges • Comparison to other pedagogical models • Concluding remarks Traditional Approach • Stovepipe model – Architecture and OS as distinct courses usually in the junior/senior years • Georgia Tech – Followed similar model until 1999 – Two junior level courses one on OS and the other on architecture What is wrong with the traditional approach? • Symbiotic relationship missed – High level language and instruction sets – OS abstractions and processor – Network protocols and physical network – Students get this? • Not if compartmentalized • Gap between the time when the courses are taken – Concepts forgotten • Connections not seen at all by the students most of the time Why change? • Problems with the traditional approach • Changing CS scene – New areas evolving – Graphics, visualization, HCI – Need rethinking of “core” • UG research involvement – Need to infuse interest early – Entry level for systems research high New approach • Excitement of middle-school kids – What is inside a box? – What makes it play cool music or video games? • An integrated course – Combining OS and architecture • Goal of the course – “Unraveling the box” – Take the journey together exploring hardware and the OS abstractions – Emphasize connectedness Pedagogy of new approach • Present what is “inside a box” – – – – – Processor module Memory module I/O and storage module Parallel module Network module • Key differentiator – Concomitant treatment of hardware and software in each module Pedagogical style • Discovery as opposed to indoctrination or instruction • Top down approach – Start with problem to be solved – Explore solution space together • Example: – What is memory management? • Understand the need first • Discover the software issues and the corresponding hardware issues • Story telling approach – Keeps the student interest alive Processor module • HLL constructs and their influence on instruction-set design • Simple implementation followed by performanceconscious pipelined implementation • Process abstraction in OS and processor scheduling Memory module • Memory management in OS • Architectural issues • Memory hierarchies I/O and storage module • Program discontinuities including interrupts, traps, and exceptions – Processor mechanisms – OS mechanisms • Devices and device drivers • Emphasis on disk subsystem – Storage abstraction – File system fundamentals Parallel module • Introduce threads as a programming construct • OS issues for supporting parallel programming • Architectural issues for supporting parallel programming Network module • Evolution of networking hardware • Network protocol stack Connecting the different modules • HLL constructs lead to design of instruction-set for LC-2200 • Processor implementation of LC-2200 • Memory management assists to LC-2200 • Interrupt and DMA support to LC-2200 • …… Why parallelism in a first course? • Our motivation then (circa 98) – Love affair of CS with parallelism • PL and concurrency • OS and concurrency – Enablers in the 90’s • Java, MT OS, multiple CPUs in desktops • In hindsight now – Multicore CPUs – Multithreading as a programming concept in intro courses Why networking in a first course? • “box” without connectivity is no good today • Protocol stack is an integral part of any OS • Our motivation – Understand evolution of networking gear – Understand mechanisms needed in protocol stack – Understand how a “box” avails of network services Where does this course fit? • Assumed knowledge – Logic design, assembly language, and C programming • New course is a first systems course – Preferably in sophomore year • What follows? – Advanced architecture, OS, networking courses – For those following other pursuits • Sufficient exposure to “core” Putting this pedagogical style in practice • 4 credit-hour semester course or 5-credit hour quarter course • 45 hours of lecture – Roughly 9 hours for each module (some more than others) • 60-90 hours of unsupervised lab time for projects Experience at Georgia Tech • CS 2200 introduced in Fall 1999 • Project component for each module – Concepts “get in” via projects – Collaboration allowed • Key is “learning” – Creativity in evaluation Evaluating the pedagogy • CS students hardware-averse • OS and hardware together makes “sense” – Hardware design as an algorithmic exercise • Successful internships – Anecdotal evidence from industries and students • Concepts learned early apply to other domains (e.g. web caching) • Students better prepared for advanced courses • Informal poll – At beginning of course • 10% interested in the course – At end of course • Majority feel the course was useful and important • Increased interest in systems – Number of UG students doing research in systems Other reasons why this is a good approach • Allows curricular innovation • GT CS has been a leader of innovation – Evidence • New ThreadsTM approach • Chapter 7, Pages 309-315, “The Right Stuff,” from THE WORLD IS FLAT: UPDATED AND EXPANDED EDITION, by Thomas L. Friedman Meeting the Challenges • Textbook – Good books available for the stovepipe model – None for an integrated model • We developed comprehensive notes and slides – Used standard textbooks as background • Responding to students – Turned our courseware into online textbook in 2005 • To match the style and content • Available to the community • In use for 8 consecutive semesters (including summers) Adopting the pedagogical style • Online textbook • Extensive online slides • Several detailed project ideas from 7+ years of teaching this course • Several problem sets and model exams online • In short – Painless transition from stovepipe model to this one Comparison to other recent pedagogical models • Patt and Patel – Logic design, assembly language, plus C – Ideal as a pre-req for our course • Bryant and O’Hallaron – Programmer’s perspective – Goal • How to create “power programmers”? • Important but different from our focus – Best applied to senior level UG – A worthy follow on to our course • Saltzer and Kaashoek – System building blocks that appear in different large complex software systems – Goal • How to prepare students who can create modular software systems? – A worthy follow on to our course Concluding remarks • An integrated approach to teaching computer system architecture at sophomore level • Been in practice at GT for 7+ years • Online textbook, slides, project ideas, and tools available for the whole community Applause!!! Project: Processor Design • Students given datapath 90% complete • Project entails – Completing the datapath – Writing micro-code for implementing LC-2200 instruction set – Circuit design using LogicWorks Project: Interrupts and I/O • Students supplied with LC-2200 simulator and LC-2200 assembler • Project entails – Adding circuitry to project 1 for handling interrupts – Enhancing the simulator to deal with interrupts – Writing an interrupt handler (in LC2200 assembly) to work with the enhanced simulator Project: Virtual memory subsystem • Students supplied with a processor plus memory system simulator • Project entails – Developing a page-based VM system on top – Experimenting with different page replacement algorithms Project: MT OS • Students provided with a processor plus memory system simulator • Project entails – Implementing multithreaded OS modules for managing the CPU and I/O scheduling queues – Parallel programming using pthreads – Experimenting with different CPU scheduling algorithms Project: Reliable Transport Layer • Students provided with a simulated network layer • Project entails – Implementing a reliable transport that deals with • Packet corruption • Lost packets • Out-of-order delivery of packets – Parallel programming using pthreads