tag:blogger.com,1999:blog-9186457242428335144.post6293145239414097395..comments2024-03-28T00:36:13.790-07:00Comments on Volatile and Decentralized: The changing face of Computer Science educationMatt Welshhttp://www.blogger.com/profile/04255792550910131960noreply@blogger.comBlogger41125tag:blogger.com,1999:blog-9186457242428335144.post-61248352697629104502011-07-05T05:05:03.293-07:002011-07-05T05:05:03.293-07:00When I was an undergraduate at MIT, one of the pro...When I was an undergraduate at MIT, one of the problems that the CS department was facing was too many students were choosing it. So it was a very poorly kept secret that this was one of the reasons why the intro CS class didn't bother teaching anything about the Scheme syntax at all, but rather focused on the abstract nature of lambda functions and symbol binding. If the students couldn't figure out how to write programs in Scheme and use a fairly primitive IDE environment running on ancient HP workstations, they'd wash out and go on to other majors. It was a really great filter for people who had written a few basic programs, and thought they could make $$$ in Silly Valley during the very early beginnings of the dot com boom.<br /><br />What made sense then (when there was an oversupply of people wanting to go into computers) may not make sense today, when there seems to be much more of an interest to "attract" potential students. Back in my day, it was very clear that the main problem was filtering out to find the most qualified undergraduates to go into "Course 6".<br /><br />I remember when Professor Sussman covered all of Signals and Systems in the first 55 minute lecture, without telling the students that was what he was doing. The average slide was stayed on the overhead projector for an average of 6-10 seconds and he was speaking like Mr. Motormouth to cram it all in. Imagine forcing CS students to learn about Fourier Transforms, both discrete and continuous in the time/frequency domains --- in their Sophomore year! On the plus side, those of us who survived were able to understand things like why terminators on SCSI chains and thinnet ethernet cables were important. :-)Tedhttps://www.blogger.com/profile/13953438321298941739noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-29807296755692687842011-06-16T19:28:13.563-07:002011-06-16T19:28:13.563-07:00Re-read my comment, not trying to offend anyone by...Re-read my comment, not trying to offend anyone by calling them "old people". Sorry :D Let's just say "people above 30 years old".Rogelio Gudinohttp://cananito.com/noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-87970144669146116152011-06-16T17:58:07.351-07:002011-06-16T17:58:07.351-07:00God, I should be smarter than to say cute things p...God, I should be smarter than to say cute things privately to Matt!<br /><br />I teach automata in CS 121 for two reasons really. One is that they show the power of simple formal models, in the same way as mechanical engineers are amazed by the power of extremely spare mathematical equations with the right primitives (Newton's laws or Maxwell's). They don't love learning div and curl, but my goodness, their explanatory power. These formalisms underpin the development of the practice of computing into a science. (It's a dense course. We actually do wind up talking about NP-completeness, so the nondeterminism with which we start comes back in the a practical context at the end.) It is by no means the only good set of theory material for this role, but I'd defend the relevance of requiring something like this.<br /><br />The other (and not unrelated) reason for teaching this stuff is that it is beautiful. Beauty is an important value and it is not found in every part of the field. I'd love to teach a CS course some time where the material is chosen strictly for its beauty. Bet it would be wonderful.<br /><br />By the way, a correction to the NYT story that started this conversation: MZ really was a CS concentrator (major) at Harvard. I have no idea how the reporter got the idea he wasn't.Harry Lewishttp://people.seas.harvard.edu/~lewis/noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-4537320923899208772011-06-16T15:22:37.466-07:002011-06-16T15:22:37.466-07:00Most of the people commenting here seem to be old ...Most of the people commenting here seem to be old people, so here's the take of a young (21 years old) CS student, computer nerd since I was 7 years old.<br /><br />Whats wrong here is that people interested in CS nowadays are not really interested in CS, but Software Engineering. CS is only for hardcore nerds who want to get all the history and theory of computers.<br /><br />If I knew this 3 years ago, I would've enrolled on a SE program, not CS, in the end, I'm going to spend the rest of my life in software development, and 80% of CS students probably will do the same, so why bother going through the boring old stuff?<br /><br />So to put it short, rather than changing CS, let people interested in CS know about SE, which is probably what they're looking for in the first place.Rogelio Gudinohttp://cananito.com/noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-13528068943227398282011-06-15T21:28:50.857-07:002011-06-15T21:28:50.857-07:00There are a lot of people who are attracted to Com...There are a lot of people who are attracted to Computer Science because they love the beauty of it, the elegance of its theoretical underpinnings, and the challenge that comes with solving hard problems. These characteristics have defined the "best" students for the past several decades.<br /><br />On the other hand, focusing on this point of view misses the fact that Computer Science can be viewed as an interdisciplinary field. Especially these days, it is totally reasonable for someone to say "I want to become a Computer Scientist so that I can help cure disease", or "...so I can help alleviate poverty", or "...to become a better artist", or "...to mobilize citizens and create a better government." Catering too much to the former type student might likely shut out the latter student, who might never be drawn to the field otherwise.<br /><br />I don't have an answer for how best to organize the curriculum, other than to say that 1) catering to the second type of student doesn't require dumbing down anything, but rather rethinking the curriculum, and 2) neither of these two views of Computer Science should be considered better than the other.George Porterhttp://www.cs.ucsd.edu/~gmporternoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-5521340846307751292011-06-15T12:04:58.930-07:002011-06-15T12:04:58.930-07:00WARNING: Gratuitous plug for my Alma-mater...
You...WARNING: Gratuitous plug for my Alma-mater...<br /><br />You all are discussing a topic that Miami University's School of Engineering and Applied Science addressed in it's curriculum a few years ago... They now offer 4 different majors:<br /><br />Bachelor of Science in Applied Science - Systems Analysis<br /> Systems analysis is a multidisciplinary field that includes business, software engineering, math and science. Systems analysts combine their knowledge from these fields applied within the framework of the Scientific Method.<br /><br />Bachelor of Science in Computer Science<br /> The computer science major at Miami provides you with a thorough understanding of the key principles and practices of computing as well as the mathematical and scientific principles that underpin them. You will study programming languages, algorithms, computer architecture, operating systems, and applications of computer science such as database systems, artificial intelligence, computer games, and computer networks.<br /><br />Bachelor of Science in Software Engineering<br /> The software engineering major at Miami differs from computer science in that it emphasizes topics such as software design, software quality assurance, software requirements analysis, software project management, software maintenance, and formal methods for software development. <br /><br />Master of Computer Sciencegarrett Younghttps://www.blogger.com/profile/08958702897197509050noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-40640728434489202042011-06-15T09:30:59.981-07:002011-06-15T09:30:59.981-07:00Computer Science education is in a unique position...Computer Science education is in a unique position because the content changes so quickly. What is the most attractive intro course today may not be tomorrow. One discrete mathematics theory may be heavily used today but replaced by something else in a few years. I can't think of any other educational fields where the content has to be updated so often to remain relevant.<br /><br />I think it is great delivering a fun introduction to programming, even if there are very few computer science topics covered (although I'd like to see this happen well before the students even get to Harvard, which is what I strive to provide). If they enjoy it and are curious they will want to deeply explore the concepts and inner-workings of the computer.<br /><br />My other thought is how much of "eating your vegetables" belongs in undergraduate CS rather than at the graduate level. In comparison to the engineering and other science majors, does undergraduate CS have more or less theory? I think it strikes a pretty good balance today, but looking at more sedentary disciplines will provide insight into the right level of theory vs. application.Brian Skinnerhttp://breakoutmentors.comnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-10880636099560015592011-06-14T15:14:12.383-07:002011-06-14T15:14:12.383-07:00Fascinating reading.
"What I've been try...Fascinating reading.<br /><br />"What I've been trying to say is that hooking students with a sexy intro course with lots of relevant, real-world applications seems to work well at Harvard and is a great on-ramp for many kinds of students, though it won't appeal to everyone."<br /><br />This is the rub, isn't it. And what other posters have suggested, that some of the students we're most interested in attracting to our field will be turned off or disinterested in this approach, is also true. It's a complicated field, made more complicated by the nature of our post-secondary institutions that place a value on large classes of tuition-paying students rather than high quality graduates (in undergraduate programs). The tension between the theory and application sides of this discussion (not to mention the heavily entrenched positions that have emerged in the comments) lead to severe philosophical conflicts in managing (as you put it, Matt) the first-year conundrum.<br /><br />In the past 20 years, the field of psychology has been dealing with much the same tensions -- do we prepare our students for the clinical work they will likely be doing as Ph.D. graduates or do we train high caliber researchers? Their solution has been to stream -- not always easy for students to find their place, but it does allow students to indicate early on what they're hoping to get out of a degree in psychology. We see a similar domain-based streaming in engineering and commerce. Is computer science a wide enough field with enough students to manage this kind of streaming? <br /><br />Can we find a marriage between the two approaches where students initially attracted to one stream might easily switch horses in mid-stream? (sorry) I don't think we're going to resolve these tensions through creative programming in the first few years of CS, let alone in the primary intro courses (of which there is often only one in a university pre degree-- good old CS 111 for majors, 116 for engineers, and 110 for commerce students at my institution).Smartbottomhttps://www.blogger.com/profile/10289832390084738833noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-75781381711868896442011-06-14T14:39:54.510-07:002011-06-14T14:39:54.510-07:00A couple of commenters have suggested that what I&...A couple of commenters have suggested that what I'm talking about should really be called "software engineering" and even made reference to software engineering degree programs.<br /><br />Personally, I think most Computer Science programs at major universities don't have enough "software engineering" material, however -- and this is important -- we should NOT be teaching software engineering *instead of* Computer Science.<br /><br />Let me explain:<br /><br />Most students graduating with a CS degree are going to go into software engineering jobs. At the university, they rarely have the opportunity to learn about the best practices used in the industry: complex IDEs, testing frameworks, documenting your designs, working on large teams,working with large amounts of code. It would be great to get more of this material into a CS degree program to ensure students are better prepared for the real world, but it's hard to emulate an industry environment at a university. Internships and other experiences can augment the coursework and I am strongly in support of that.<br /><br />However, if we stop teaching Computer Science and only teach software engineering, a great deal has been lost. Students trained in a good CS program should be able to envision the next generation of technology and work on problems that nobody has ever thought of before. CS theory is just as important as systems and application focused work, and students need depth in all of these areas. Teaching iPhone programming and PHP hacking can't replace a deep foundation in the field.<br /><br />My comments about teaching style and topics above have been misconstrued to mean that I don't think we should teach abstract topics -- I never said that (in fact, I said quite the opposite). What I've been trying to say is that hooking students with a sexy intro course with lots of relevant, real-world applications seems to work well at Harvard and is a great on-ramp for many kinds of students, though it won't appeal to everyone.Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-22852783881140013512011-06-14T14:19:09.810-07:002011-06-14T14:19:09.810-07:00A software engineering major may be able to hack u...A software engineering major may be able to hack up a website, but my guess is (Matt correct me if I am wrong) that a company like Google prefers to hire the computer science major. They already concentrate their hiring at elite programs like Stanford, CMU, Harvard, MIT, etc. that tilt their curriculum more heavily towards theory. Even if complexity theory isn't relevant to day to day work, algorithmic thinking via reductions, recursion, etc. are fundamental to high level software engineering.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-70188064517678576772011-06-14T13:58:22.733-07:002011-06-14T13:58:22.733-07:00Jonathan has it right - CS and Software Engineerin...Jonathan has it right - CS and Software Engineering are different. We need to make courses more exciting and trad CS is dull and irrelevant for most people. But we can make interesting software engineering courses based around modern development approaches.Ian Sommerville.https://www.blogger.com/profile/08250241252861339865noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-67157139684700726762011-06-14T11:48:34.794-07:002011-06-14T11:48:34.794-07:00My interest in CS was philosophical. As a math maj...My interest in CS was philosophical. As a math major, the abstract elements where fun. Obviously I am not in majority.<br /><br />As professional programmer, I have noticed most good engineers, don't need CS theory. Just a little bit of complexity analysis goes a long way. <br /><br />Being a productive engineer is more about learning new tools and frameworks quickly. Most companies don't need a proof that there two popups won't show up at the same time. In my perfect world we would all program in something like Agda, but its not necessary right now. Its too easy to make money with crappy software. <br /><br />I think Computer Science should probably be replaced with Software Engineering. That is what most people intended to get out of it anyway, and they could still take math classes to learn the theory.Jonathan Fischoffnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-22709713783566350582011-06-14T11:03:19.683-07:002011-06-14T11:03:19.683-07:00Matt - I agree with you 100%. I am a senior at Bri...Matt - I agree with you 100%. I am a senior at Brigham Young University in the CS program and I have felt that way about the CS program for a long time. Because they teach in such an abstract and disconnect way I find myself seeking knowledge in other places then CS . I ended up taking classes not in the program and also finding jobs that would teach and traint me as I go. Which has let me gain a much greater understanding of real life application. It's just sad that i needed to go out of my program to gain this knowledge. I feel you have a correct view of CS and something does need to change.Green_monkeyhttps://www.blogger.com/profile/00095667439854067405noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-89542160387500619022011-06-14T10:58:31.709-07:002011-06-14T10:58:31.709-07:00"... some of which are good enough to turn in..."... some of which are good enough to turn into commercial products. I don't know of any other field where this is possible after taking just a single semester's worth of courses." <br /><br />If the bar is 'worth paying for' I can think of a few: painting, photography, dancing, writing to name a few.<br /><br />On another note if you feel that those people have been complete newbies transformed by the single course into fully capable professionals you watch too many movies.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-68196491850942395542011-06-14T10:21:56.662-07:002011-06-14T10:21:56.662-07:00CS is broad, and probably the only real solution i...CS is broad, and probably the only real solution is to move CS education to begin at the high school level, like other sciences. <br /><br />I agree that teaching only theory would alienate future engineers. But teaching only programming in intro courses (and beginning only in college!) alienates many smart scientists. In the US, smart scientifically inclined kids go into math, physics, and even economics before they go into CS. Why? I think it is because they don't really have any idea of the intellectual content of CS when they are picking majors. In India, on the other hand, the smartest kids are directed to theoretical CS. <br /><br />So there is lots of material to present. Kids have to know enough of what is out there before it is time for them to choose majors. This could happen if CS was a standard part of the US high school curriculum.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-85556407409150484122011-06-14T10:02:34.431-07:002011-06-14T10:02:34.431-07:00I just read through the post and several comments,...I just read through the post and several comments, and as a current CS undergraduate, I'd like to provide my point of view.<br /><br />First of all, here's my interpretation of the arguments of some commenters.<br /><br />Commenters: Matt is saying teach students how to build iPhone apps and only teach that subject. Teach students PHP and JavaScript because that will get them jobs. How stupid!<br /><br />My interpretation: Let's teach students JavaScript to use to build their websites. Your website is slow? Let's see how we can fix that. Use the ability of JavaScript functions to cache frequently used DOM objects. Future lookups will be O(1). If you don't cache DOM objects, your function might have to look through all N DOM objects, where N is the number of DOM objects on the page. Really, though, the expected value of N, or E[N], is N/2. Where have you seen this material before? Right, in your data structures and probability and statistics classes. See, isn't theory fun when you know its applications?"<br /><br />I agree with Matt 99% (for you "intellectuals" and professors that like to overanalyze everything, yes, that is a rough estimate, not an exact calculation of the congruency between my opinion and Matt's). To explain why I agree, I want to tell you the story of how I came to love linear algebra.<br /><br />During my freshman year of college, I took an intro to linear algebra course. Eight weeks into the course, we were taught eigenvalues, eigenvectors, and singular value decomposition, among other related topics. The professor presented these ideas with so much theoretical baggage that I was completely lost. Just a note, I don't consider myself a genius, but I do think I'm smarter than most students. So when I was completely lost in the material, I just got angry and frustrated and thought to myself, linear algebra is disgusting and I don't want to touch this material again.<br /><br />Fast forward to sophomore year, I took a course on the application of compute science ideas. Really though, it was an application of linear algebra. "What in the world did I sign up for?" I thought. As the weeks progressed, though, I fell madly in love with linear algebra. I learned how to edit JPEGs by modifying a matrix and I learned how to analyze President Obama's tax returns. One project that really struck me, though, was the face recognition project, which involved the once-hated eigenvalues, eigenvectors, and SVD. This project made me realize that my previous hatred for linear algebra almost cost me the potentially infinite joys of learning this beautiful subject. After the course ended, I picked up my old linear algebra book, and I reread some subjects, this time, with more appreciation for its beauty and power.<br /><br />Isn't that what teachers and professors want from their students? An appreciation for theoretical topics? A desire to learn more? So what's wrong with making a curriculum sexier with teaching some applications?<br /><br />Taking Matt's friend's metaphor a bit further, kids learn to eat their vegetables once they realize how healthy they are for their bodies. Students will readily absorb material once they learn why they should even pay attention in class.<br /><br />If you made it this far in reading my comment, thanks.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-81586462371879863472011-06-14T10:02:32.619-07:002011-06-14T10:02:32.619-07:00"Learning to program iPhone apps isn't Co..."Learning to program iPhone apps isn't Computer Science. Simple as that. It's just learning to use someone's library to do stuff. It's a bit like learning how to use a shovel and thinking you're a civil engineer."<br /><br />This.<br /><br />As a current CMU student who recently went through 15-251, I'd like to point out that you can't sugarcoat the fact that it also exists to weed out those who aren't prepared to put in the effort to learn the abstract parts of CS - it's 15+ hours a week of work for most students (mostly freshmen) just to pass, on top of 3-4 other classes. For those who just want to make iPhone apps, our IS major is almost as good and allows you to focus on coding, not CS.Bennoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-28496457419099487642011-06-14T09:17:03.338-07:002011-06-14T09:17:03.338-07:00Learning to program iPhone apps isn't Computer...Learning to program iPhone apps isn't Computer Science. Simple as that. It's just learning to use someone's library to do stuff. It's a bit like learning how to use a shovel and thinking you're a civil engineer.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-62237672128758364892011-06-14T09:01:51.965-07:002011-06-14T09:01:51.965-07:00When I was an undergrad, each year was significant...When I was an undergrad, each year was significantly tougher than the previous. First year you got exposed to programming: not quite as exciting of projects as CS50, but just basic code hacking.<br /><br />Next year you were exposed to an assembly language, Lisp and discrete mathematics, among other topics. Some students started having second thoughts.<br /><br />Junior year you were getting into analyzing algorithms, maybe a higher level math course, machine learning, etc. Here a cohort found itself well above their heads. But it was junior year, and a lot weren't willing to switch majors so late and add a year or two to their academic career.<br /><br />By senior year people were repeating Operating Systems and Formal Language Theory for two or more semesters. I knew kids who hated CS at this point. But they spent days on end studying to achieve that C average so they could escape with a diploma. They left never wanting to touch an IDE again.<br /><br />My point is that you want an intro class to attract potential students, but you also want it to communicate the standards the students will eventually be held to. Students already come into the major thinking CS means building and playing iPhone games. I think it's critical that very early, preferably the first semester, the students be challenged in any dimension they'll eventually be expected to display mastery in. Everything runs so much smoother when expectations are communicated up front.Paulhttps://www.blogger.com/profile/11679234404220837033noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-24150498902874017102011-06-14T08:55:53.711-07:002011-06-14T08:55:53.711-07:00Sometimes, I think about going back to get my grad...Sometimes, I think about going back to get my graduate degree in Computer Science -- I've been successfully working as a computer programmer for 25 years, but my degree is in electrical engineering.<br /><br />The reason (for me, anyway) to go back to school would be to learn more of the "science" part of CS -- beyond what I've self taught. I think the "programming part" can be picked up on the job.Jorge Monasteriohttps://www.blogger.com/profile/12978901430143368088noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-75063198855171905332011-06-14T08:53:41.909-07:002011-06-14T08:53:41.909-07:00Michael - I guess we'll have to agree to disag...Michael - I guess we'll have to agree to disagree on our interpretation of the various forces shaping Harvard's CS degree requirements. I don't think this blog is the place to air dirty laundry. I think you are missing my point that this is really about what I see as a general shift in CS curriculum towards more application-focused topics. I didn't mean to commit sacrilege against the all holy Church of Turing :-)Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-15989815024344439692011-06-14T08:50:07.889-07:002011-06-14T08:50:07.889-07:00Really, what this highlights is we need to draw a ...Really, what this highlights is we need to draw a distinction between computer science and software engineering. If your goal is to write code, go with the latter. If you're interested in the deep theoretical roots of software engineering, CS is your gig.<br /><br />We certainly wouldn't be the only field with that split - many places divide theory and application, because the skills and knowledge required are subtly different.Rachel 'Groby;' Blumhttp://www.rachelslabnotes.comnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-15722190314140473332011-06-14T08:19:17.121-07:002011-06-14T08:19:17.121-07:00Matt,
Forgive me, but again, I think you're b...Matt,<br /><br />Forgive me, but again, I think you're bizarrely mischaracterizing Harvard's program, so let's review. You state: "Right, my point about CS121 is emphatically *NOT* that we should not be teaching this material, but rather that we see this topic as more essential than "practical" material, like threading..."<br /><br />As we have discussed frequently in faculty meetings, we have decided that a program with minimal specific class requirements is appropriate for us and our institution. Our requirements for a major are correspondingly minimal: students are required to take 2 introductory programming systems courses, to take 2 theory courses (one of which is required to be CS 121), and fulfill some breadth requirements. <br /><br />Certainly these minimal requirements emphasize the importance of the practical. CS 61, which is one of multiple classes that covers threads, is not strictly required, but is encouraged for CS majors.<br /><br />In establishing minimal requirements, we wanted to maximize student flexibility. But we also considered what we wouldn't want majors to graduate without knowing. Programming skills is certainly one thing, hence the 2-class requirement. And theoretical foundations is the other. Specifically, we thought that a student graduating without knowledge of basics like Turing machines, the P=NP? problem, and undecidability and the limits of computation would be completely unsuitable, and hence the specific requirement for CS 121. While we expect a student will learn about threads in some class, you are correct that we don't make it a requirement. I should point out that my own class, Algorithms and Data Structures (CS 124), is also not strictly required, although clearly for at least the last ten years it's been the single most important course a Harvard student could have taken. So we are consistent in this philosophy of minimal requirements. I should point out it has the advantage that there's an endless list of wonderful things a CS major arguably should know, but we really can't expect them to actually learn them all; we expect with minimal breadth requirements they'll learn most of them, while still being able to focus on things that most interest and excite them.<br /><br />Finally, I just really don't understand this sentence: "There [Cornell], one did not have to decide between theory and systems - you got both." Same here -- you have some requirements for both. But then you get choice, subject to some loose breadth requirements. <br /><br />Michael <br /><br />[Finally, as an aside, the reason students learn NDFAs in CS121 is not strictly because NDFAs are so important, but because before seeing Turing machines it's good to see and formalize other simpler structures that do weaker computations than Turing machines, and it allows one to introduce nondeterminism much more easily. It's not an explicit statement that NDFAs are more important than threads.]Michael Mitzenmacherhttps://www.blogger.com/profile/02161161032642563814noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-28088554818322268572011-06-14T08:12:30.268-07:002011-06-14T08:12:30.268-07:00Perhaps part of the problem is that four years is ...Perhaps part of the problem is that four years is far too little time to teach people about computer science given the vastness of the field. You're trying to hook students into being interested, give them a solid grounding in the theoretical fundamentals AND give them practical skills to survive in the computing industry. I think that's a tall order for ANY degree program.<br /><br />I would personally see the idea of one intro course be abandoned in favor of multiple intro courses depending on the level of the students. For students who are interested, but not hooked, we can go the "hack an iPhone" route first. But for students who already know what they're getting into we can go with a more theoretical and rigorous first course to make it clear that there is more to CS than writing webpages and pulling data out of a SQL database.<br /><br />Incidentally, I'm starting a PhD at Cornell in the fall after 4 years at a liberal arts college. Before that I'd been programming on and off for four years. It took me about 6 years just to figure out what computer science and what parts of it I was interested in. And I'm still learning. It might just be that I'm slow, but I think CS education really needs to start before the first year of college.Shrutarshi Basuhttp://basushr.netnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-91790119326500674692011-06-14T06:22:57.891-07:002011-06-14T06:22:57.891-07:00There seems to be a wedding in CS these days betwe...There seems to be a wedding in CS these days between the theory and the application. Perhaps something should be made clear. The path of CS isn't simply linear. Depending on where you go looking for jobs and depending on where the jobs are will vary how to market CS courses to students. <br /><br />Since economies are dynamic in their need and CS is still a 'growing' science, as an earlier post makes evident; it seems clear to me that Mark is right. We need to make CS hands on, at least at first and certainly in the first year. Theoretical skills will certainly be necessary in the future, for any CS major. However, if they can't work with the basics of code, hacking and so forth, they won't be marketable candidates.<br /><br />So lets face facts, if you can't make CS marketable you won't get the opportunity and then we aren't making future CS majors we are adding to unemployment.<br /><br />I understand this to be the underlying tension between theory vs practice, but I just wanted to make the point clear.Anonymousnoreply@blogger.com