{"id":876,"date":"2007-08-23T13:30:53","date_gmt":"2007-08-23T17:30:53","guid":{"rendered":"http:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-scienc"},"modified":"2007-08-23T13:30:53","modified_gmt":"2007-08-23T17:30:53","slug":"improving-undergraduate-computer-science-education","status":"publish","type":"post","link":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/","title":{"rendered":"Improving Undergraduate Computer Science Education"},"content":{"rendered":"<p>These are the notes for a talk that I&#8217;m giving tomorrow at Makerere University in Kampala, Uganda.\u00a0 I&#8217;m posting them here because it is a convenient way to write and others might find these interesting.<\/p>\n<p>I&#8217;ll talk about MIT because that is where I have the most experience teaching.<\/p>\n<p>MIT operates the same way that it did upon opening in 1865: two semesters with long vacations in between; students do most of their learning in take-home problem sets (6-9 hours\/week\/course)\u00a0for which they get some inspiration in lectures (2-3 hours\/week); evaluation\/grading is done by the same people who are teaching\/coaching.<\/p>\n<p>The calendar was designed for rich families.\u00a0 You want your kid available in the winter so that you can take him down to your estate in Florida.\u00a0 You want him free to accompany you on a Grand Tour of Europe during the summer.\u00a0 In 2007, however, most college students are from middle-class families.\u00a0 Why would you want to pay for the kid to attend four years of college, plus\u00a0spring break trips to Mexico and summer vacations,\u00a0when a bachelor&#8217;s degree could be obtained in 2.5 years on a normal 48-week\/year work schedule?<\/p>\n<p>How about lectures?\u00a0 You need to broadcast some information to 100 people.\u00a0 Printing was expensive and cumbersome in 1865.\u00a0 Telephone, television, and Internet did not exist.\u00a0 A lecture was probably indeed the most efficient way of getting some information to a large group, despite the fact that humans can read 3X faster than they can listen..\u00a0 Compare to 2007, however, when you could simply email a list of those 100 people or provide them with a URL.\u00a0<\/p>\n<p>Why did people come to lectures in 1865?\u00a0 Their lodgings weren&#8217;t centrally heated and the temperatures in Boston can get down to -10C.\u00a0 Many came to get warm.\u00a0 They had no television, no radio, no Internet, no email, no instant messaging, no mobile phone.\u00a0 Many students came to lecture for entertainment.<\/p>\n<p>What about homework?\u00a0 Students would do homework either in the library or at home.\u00a0 In 1865 both places lacked television, video games, email, etc.\u00a0 In 2007, the students who do best may be the ones with the best study habits, not those who are the most able.\u00a0 Companies do not rely on lecture+homework for getting work done; they create an environment with limited distractions and keep workers there for most of each day.<\/p>\n<p>Evaluation and grading in 1865 was done by the teachers.\u00a0 This is an invitation to dishonesty since you are always tempted to give students As, but there was little alternative since student work was not easily accessible to others.\u00a0 In 2007 in most areas of academia, student work can be viewed just as easily by someone on the other side of the planet as by the teacher.\u00a0 If we want to ensure quality and that students always regard us teachers as allies, why would we want to be involved in evaluation?<\/p>\n<p>How well does the MIT system work?\u00a0 It should work pretty well.\u00a0 We have some of the best and most energetic lecturers in the U.S.\u00a0 Lectures are generally kept to 50 minutes (more than double the limit established by education researchers).\u00a0 The lectures are demanding; if you tune out for 5 minutes, you will have a lot of trouble catching up.\u00a0 Professors do not put up PowerPoints and read them bullet by bullet.\u00a0 Homework assignments are weekly in most courses and are extremely demanding.\u00a0 The students are among the most able and best-prepared in the U.S.\u00a0 Yet when you ask graduates in CS what percentage of their classmates are capable of programming and what percentage they would enjoy working with, the answer is usually 25-30 percent.\u00a0 People who studied poetry, physics, or civil engineering are often better software engineers than an MIT CS graduate (contrast with medicine; not too many good doctors out there who skipped med school).\u00a0 A MIT student graduates ready to work for an engineer, not to be an engineer.\u00a0 Not too impressive considering the near-$200,000 cost and the abilities of the incoming students.\u00a0 (And the problem is not always fixed on the first job; companies tend to give junior engineers a tiny piece of a big problem, not a small problem to solve by themselves).<\/p>\n<p><a href=\"http:\/\/philip.greenspun.com\/teaching\/one-term-web\">6.171: Software Engineering for Internet Applications<\/a>.\u00a0 This is a one-semester attempt to address the deficiencies in the rest of the curriculum.\u00a0 What do we try to teach in 13 weeks?<\/p>\n<ul>\n<li>object-oriented design where each object is a Web service (distributed computing)<\/li>\n<li>about concurrency and transactions<\/li>\n<li>how to build a stateful user experience on top of stateless protocols<\/li>\n<li>about the relational database management system (there is no DBMS course at MIT)<\/li>\n<li>how to work at every stage of the engineering life cycle: listen to a vague request, write down a precise spec, build a prototype, document for other programmers, test with users, refine, launch, refine, document for decision-makers<\/li>\n<\/ul>\n<p>\u00a0How does it work?<\/p>\n<ul>\n<li>Students organized themselves into teams of 2 (ideal) or 3 (acceptable) and are connected with a real-world client.<\/li>\n<li>Lecture time is devoted to teams presenting either designs or prototypes and the other teams criticizing.\u00a0 This prepares students to participate in engineering design reviews.\u00a0 If nobody makes a suggestion I consider important,\u00a0 I will make it myself at the end of a review or via email to the class mailing list after class.\u00a0 If I have something that I want everyone to know, I add it to <a href=\"http:\/\/philip.greenspun.com\/seia\/\">the online textbook<\/a> or email it to the class prior to meeting.<\/li>\n<li>Occasionally we will use the meeting time for teams to work together (sometimes paired with another team) on a data modeling challenge.\u00a0 This works great in rooms with a lot of blackboards and after 20 minutes we start asking teams to present their work while others criticize and comment.<\/li>\n<li>Most evaluation is done by the clients (usually non-technical), professional interface designers whom I bring in, and professional software engineers whom I bring in as mentors and critics.\u00a0 The final presentation and write-up is evaluated by a team of business executives and venture capitalists; students are told to pitch the project as though they were seeking follow-on funding.<\/li>\n<\/ul>\n<p>How well does it work?<\/p>\n<ul>\n<li>Students report that this was the most useful class at MIT<\/li>\n<li>Most graduates of the course ended up getting the jobs that they wanted, usually at Microsoft or Google (though the ones who went to Microsoft subsequently quit to work for Google)<\/li>\n<li>Example projects: <a href=\"http:\/\/philip.greenspun.com\/seia\/gallery\/spring1999\/arfdigita\/\">http:\/\/philip.greenspun.com\/seia\/gallery\/spring1999\/arfdigita\/<\/a>\u00a0and <a href=\"http:\/\/philip.greenspun.com\/seia\/gallery\/fall2003\/entclub\/\">http:\/\/philip.greenspun.com\/seia\/gallery\/fall2003\/entclub\/<\/a><\/li>\n<\/ul>\n<p>Conclusion:<\/p>\n<ul>\n<li>Lecturing has been found to be extremely ineffective by all researchers.\u00a0 The FAA limits lectures to 20 minutes or so in U.S. flight schools.<\/li>\n<li>Lab and project work are where students learn the most.\u00a0 The school that adopted lab\/projects as the core of their approach quickly zoomed to the first position among American undergrad schools of engineering (<a href=\"http:\/\/www.olin.edu\/\">www.olin.edu<\/a>).<\/li>\n<li>Engineers learn\u00a0by doing progressively larger projects, not by doing what they&#8217;re told in one-week homework assignments or doing small pieces of a big project<\/li>\n<li>Everything that is part of a bachelor&#8217;s in CS can be taught as part of a project that has all phases of the engineering cycle, e.g., teach physics and calculus by assigning students to build a flight simulator<\/li>\n<li>It makes a lot of sense to separate teaching\/coaching from grading and, in the Internet age, it is trivial to do so.\u00a0 Define the standard, but let others decide whether or not your students have met the standard.<\/li>\n<li>A student who graduates with a portfolio of 10 systems, each of which he or she understands completely and can show off the documentation as well as the function (on the Web or on the student&#8217;s laptop), is a student who will get a software development job.<\/li>\n<\/ul>\n<p>More:<\/p>\n<ul>\n<li><a href=\"http:\/\/philip.greenspun.com\/teaching\/undergrad-cs\">http:\/\/philip.greenspun.com\/teaching\/undergrad-cs<\/a><\/li>\n<li><a href=\"http:\/\/philip.greenspun.com\/teaching\/teaching-software-engineering\">http:\/\/philip.greenspun.com\/teaching\/teaching-software-engineering<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>These are the notes for a talk that I&#8217;m giving tomorrow at Makerere University in Kampala, Uganda.\u00a0 I&#8217;m posting them here because it is a convenient way to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-876","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog\" \/>\n<meta property=\"og:description\" content=\"These are the notes for a talk that I&#8217;m giving tomorrow at Makerere University in Kampala, Uganda.\u00a0 I&#8217;m posting them here because it is a convenient way to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/\" \/>\n<meta property=\"og:site_name\" content=\"Philip Greenspun\u2019s Weblog\" \/>\n<meta property=\"article:published_time\" content=\"2007-08-23T17:30:53+00:00\" \/>\n<meta name=\"author\" content=\"philg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"philg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/\"},\"author\":{\"name\":\"philg\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#\\\/schema\\\/person\\\/448e4e6a0ae9105741a06dcf62cee50e\"},\"headline\":\"Improving Undergraduate Computer Science Education\",\"datePublished\":\"2007-08-23T17:30:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/\"},\"wordCount\":1306,\"commentCount\":9,\"publisher\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#\\\/schema\\\/person\\\/448e4e6a0ae9105741a06dcf62cee50e\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/\",\"url\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/\",\"name\":\"Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#website\"},\"datePublished\":\"2007-08-23T17:30:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/2007\\\/08\\\/23\\\/improving-undergraduate-computer-science-education\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improving Undergraduate Computer Science Education\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/\",\"name\":\"Philip Greenspun\u2019s Weblog\",\"description\":\"A posting every day; an interesting idea every three months...\",\"publisher\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#\\\/schema\\\/person\\\/448e4e6a0ae9105741a06dcf62cee50e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/#\\\/schema\\\/person\\\/448e4e6a0ae9105741a06dcf62cee50e\",\"name\":\"philg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg\",\"url\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg\",\"width\":2047,\"height\":2560,\"caption\":\"philg\"},\"logo\":{\"@id\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg\"},\"url\":\"https:\\\/\\\/philip.greenspun.com\\\/blog\\\/author\\\/philg\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/","og_locale":"en_US","og_type":"article","og_title":"Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog","og_description":"These are the notes for a talk that I&#8217;m giving tomorrow at Makerere University in Kampala, Uganda.\u00a0 I&#8217;m posting them here because it is a convenient way to [&hellip;]","og_url":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/","og_site_name":"Philip Greenspun\u2019s Weblog","article_published_time":"2007-08-23T17:30:53+00:00","author":"philg","twitter_card":"summary_large_image","twitter_misc":{"Written by":"philg","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/#article","isPartOf":{"@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/"},"author":{"name":"philg","@id":"https:\/\/philip.greenspun.com\/blog\/#\/schema\/person\/448e4e6a0ae9105741a06dcf62cee50e"},"headline":"Improving Undergraduate Computer Science Education","datePublished":"2007-08-23T17:30:53+00:00","mainEntityOfPage":{"@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/"},"wordCount":1306,"commentCount":9,"publisher":{"@id":"https:\/\/philip.greenspun.com\/blog\/#\/schema\/person\/448e4e6a0ae9105741a06dcf62cee50e"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/","url":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/","name":"Improving Undergraduate Computer Science Education - Philip Greenspun\u2019s Weblog","isPartOf":{"@id":"https:\/\/philip.greenspun.com\/blog\/#website"},"datePublished":"2007-08-23T17:30:53+00:00","breadcrumb":{"@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/philip.greenspun.com\/blog\/2007\/08\/23\/improving-undergraduate-computer-science-education\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/philip.greenspun.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Improving Undergraduate Computer Science Education"}]},{"@type":"WebSite","@id":"https:\/\/philip.greenspun.com\/blog\/#website","url":"https:\/\/philip.greenspun.com\/blog\/","name":"Philip Greenspun\u2019s Weblog","description":"A posting every day; an interesting idea every three months...","publisher":{"@id":"https:\/\/philip.greenspun.com\/blog\/#\/schema\/person\/448e4e6a0ae9105741a06dcf62cee50e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/philip.greenspun.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/philip.greenspun.com\/blog\/#\/schema\/person\/448e4e6a0ae9105741a06dcf62cee50e","name":"philg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/philip.greenspun.com\/blog\/wp-content\/uploads\/2025\/11\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg","url":"https:\/\/philip.greenspun.com\/blog\/wp-content\/uploads\/2025\/11\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg","contentUrl":"https:\/\/philip.greenspun.com\/blog\/wp-content\/uploads\/2025\/11\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg","width":2047,"height":2560,"caption":"philg"},"logo":{"@id":"https:\/\/philip.greenspun.com\/blog\/wp-content\/uploads\/2025\/11\/20210525-philip-greenspun-sea-turtle-release-scaled.jpg"},"url":"https:\/\/philip.greenspun.com\/blog\/author\/philg\/"}]}},"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paokyZ-e8","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/posts\/876","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/comments?post=876"}],"version-history":[{"count":0,"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/posts\/876\/revisions"}],"wp:attachment":[{"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/media?parent=876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/categories?post=876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/philip.greenspun.com\/blog\/wp-json\/wp\/v2\/tags?post=876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}