{"id":692,"date":"2008-01-08T00:11:33","date_gmt":"2008-01-08T00:11:33","guid":{"rendered":"https:\/\/www.joelonsoftware.com\/?p=692"},"modified":"2008-01-08T00:11:33","modified_gmt":"2008-01-08T00:11:33","slug":"undergraduate-programming","status":"publish","type":"post","link":"https:\/\/www.joelonsoftware.com\/2008\/01\/08\/undergraduate-programming\/","title":{"rendered":"Undergraduate programming"},"content":{"rendered":"<p>From <a href=\"http:\/\/www.stsc.hill.af.mil\/CrossTalk\/2008\/01\/0801DewarSchonberg.html\">CrossTalk, The Journal of Defense Software Engineering<\/a>: &#8220;It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline.&#8221;<\/p>\n<p><a href=\"https:\/\/www.joelonsoftware.com\/articles\/ThePerilsofJavaSchools.html\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" style=\"MARGIN-LEFT: 5px\" height=\"192\" alt=\"\" src=\"https:\/\/i0.wp.com\/www.joelonsoftware.com\/wp-content\/uploads\/2008\/01\/Lincoln_Center_Trees.jpg?resize=280%2C192&#038;ssl=1\" width=\"280\" align=\"right\" border=\"0\" \/>JavaSchools<\/a> are not operating in a vacuum: they&#8217;re dumbing down their curriculum because they think it&#8217;s the only way to keep CS students. The real problem is that these schools are not doing anything positive to attract the kids who are really interesting in <em>programming<\/em>, not computer science. I think the solution would be to create a programming-intensive BFA in Software Development&#8211;a Julliard for programmers. Such a program would consist of a practical studio requirement developing significant works of software on teams with very experienced teachers, with a sprinkling of liberal arts classes for balance. It would be a huge magnet to the talented high school kids who love programming, but can&#8217;t get excited about proving theorums.<\/p>\n<p>When I said BFA, Bachelor of Fine Arts, I meant it: software development is an art, and the existing Computer Science education, where you&#8217;re expected to learn a few things about NP completeness and Quicksort is singularly inadequate to training students how to develop software.<\/p>\n<p>Imagine instead an undergraduate curriculum that consists of 1\/3 liberal arts, and 2\/3 software development work. The teachers are experienced software developers from industry. The studio operates like a software company. You might be able to major in Game Development and work on a significant game title, for example, and that&#8217;s how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spend most of their time dancing.<\/p>\n<p>There are already several programs going in this direction: a lot of Canadian universities, notably <a href=\"http:\/\/www.softeng.uwaterloo.ca\/\">Waterloo<\/a>, have Software Engineering programs, and in Indiana, <a href=\"http:\/\/www.cs.rose-hulman.edu\/\">Rose-Hulman<\/a> combines a good software engineering program with a co-op program called <a href=\"http:\/\/www.rhventures.org\/\">Rose-Hulman Ventures<\/a>. These programs have no problem attracting lots of qualified students at a time when the Ivy League CS departments consider themselves lucky if they get a dozen majors a year.<\/p>\n<p>In the meantime, think about how many computer science departments earned their reputation by writing an important piece of code: MIT&#8217;s X Window, Athena, and Lisp Machine; CMU&#8217;s Andrew File System, Mach, and Lycos; Berkeley&#8217;s Unix; the University of Kansas&#8217; Lynx; Columbia&#8217;s Kermit. Where are those today? What have the universities given us lately? What&#8217;s the best college for a high school senior who really loves programming but isn&#8217;t so excited about lambda calculus?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>From CrossTalk, The Journal of Defense Software Engineering: &#8220;It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of&hellip; <span class=\"read-more\"><a class=\"more-link\" href=\"https:\/\/www.joelonsoftware.com\/2008\/01\/08\/undergraduate-programming\/\" rel=\"bookmark\">Read more <span class=\"screen-reader-text\">&#8220;Undergraduate programming&#8221;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[2],"tags":[],"class_list":["post-692","post","type-post","status-publish","format-standard","hentry","category-news"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p83KNI-ba","_links":{"self":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/692","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/comments?post=692"}],"version-history":[{"count":0,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/posts\/692\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/media?parent=692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/categories?post=692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joelonsoftware.com\/wp-json\/wp\/v2\/tags?post=692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}