7 ms·
CS for All
- allencoin 11y ago>At Mudd, this course is taken by almost every first-year student—irrespective of the student’s ultimate major—as part of our core curriculum. Thus, it serves as a first computing course for future CS majors and a first and last computing course for many other students. This is a great thing to offer students and I wish my University had made this a part of the curriculum. Somehow I managed to have practically zero exposure to computer science or programming until after graduation--only to discover that I find it immensely challenging, interesting, and rewarding. I probably would have switched majors if I'd taken this class Freshman year.
- mynameisvlad 11y agoThe University of British Columbia also has something similar, CS110 which uses a subset of Racket (Beginning/Intermediate/Advanced Student Language) to teach core CS concepts to a wide range of students. The course videos are all available on Youtube: https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/playlists?sort=da&flow=grid&view=1 https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/pla... and I believe the "Systematic Program Design" courses on EdX are an expanded version of the course.
- Zombieball 11y agoInterestingly there is a common tie between Mudd and UBC: Maria Klawe (a truly inspirational woman). I would t doubt she had her part in both these courses.
- mynameisvlad 11y agoJust based on her timeline at UBC, I don't think she would have. CS 110's first pilot offering was in 2009 (I was one of a few dozen students to choose it over the existing CS111) whereas she left the department in 1995, and the school in 2002 (between those she was involved in the faculty of Science as a whole). At most, she would have been part of the early planning stages or discussions of the course, although perhaps she could have been an informal advisor through the years after her departure.
- inevitable2 11y agoAs a general rule, college presidents don't get involved in course creation--even at small colleges like Harvey Mudd. In this case it would have been hard for her to have had a part since the course was created before she arrived.
- xasos 11y agoReally interesting that UBC uses Racket for the intro CS course, because UWaterloo does as well
- mynameisvlad 11y agoOh really? Huh, I didn't know. I can say that I really appreciate what was done in CS110. I learned about a bunch of topics that would have been taught later on in other curriculums like recursion, graphs, lambda calculus, first class functions, and even implemented minmax. Granted, I took the pilot offering which has since been scaled down (lowest common denominator of student and such) but there were a lot of concepts which just couldn't have been taught efficiently with something like Java, which has a lot more syntax to learn before even being able to get to the meat of the course. That said, the course is definitely not for everyone. People that taught themselves other languages before coming to UBC generally found it to be too easy at first, wrote the course off as being stupid, then started lagging slowly as time went on and more advanced topics got introduced. I've TAed the course a few times, and have seen that come up a lot. Also, of course, the people that just couldn't grasp the concepts in the course. But overall, it was a fairly well-attended class, with lots of people from across the school (it counted as as a computation course for Arts majors and was easier than Calc 3 :) ). Really cool to see the different ways people would approach a problem.
- pakled_engineer 11y agoU of Chicago uses HtDP with typed racket. https://www.classes.cs.uchicago.edu/archive/2014/fall/15100-1/ https://www.classes.cs.uchicago.edu/archive/2014/fall/15100-...
- mjn 11y agoI think it's a good idea, but fwiw it's not CS-specific. Harvey Mudd's idea isn't that CS is so uniquely important that everyone should take it, but rather than everyone should take a lot of things, regardless of major, and CS is one of those things. The curriculum is designed with a philosophy of fairly broad education, kind of in line with a liberal-arts college ideal, but with more of a STEM flavor. I was a CS major there, and only maybe 1/3 of my total course hours were CS: the split is roughly 1/3 in your major, 1/3 Common Core, and 1/3 "HSA" (humanities, social-science, and the arts). [1] The technical part of the Common Core is currently: 1 course biology, 1 course CS, 1 course engineering, 1.5 courses chemistry (0.5 is a lab), 2.5 courses physics, 0.5 course elective lab, 3 courses mathematics. [1] There's even a hokey triangle illustrating that philosophy in the course catalogue (p.26): https://www.hmc.edu/academics/wp-content/uploads/sites/7/2013/11/hmc-catalogue-13-14.pdf#28 https://www.hmc.edu/academics/wp-content/uploads/sites/7/201...
- PascLeRasc 11y agoWhat do they cover in the basic general engineering course?
- tathougies 11y agoThe course covers signals and systems. We talk about ways of modeling physical and electrical systems (or any other system really) as combinations of smaller components, and use the characterizations we derive of the smaller systems to characterize behavior of the larger ones. We use tools like the fourier transform to simplify the analysis. This wikibook seems to cover the same topics: https://en.wikibooks.org/wiki/Signals_and_Systems https://en.wikibooks.org/wiki/Signals_and_Systems
- bgribble 11y agoWhen I took it ~25 years ago it was called Intro to Systems Engineering, and covered the foundational principles of control systems design and analysis of linear dynamic systems. A lot of Laplace transforms, first- and second-order differential equations, relationships between time-domain and frequency-domain behavior, etc.
- bwy 11y agoBeautifully written text. I also really like the idea of an intro course but am, probably like many others, struggling with how to present the topics in an interesting (and practical) way without missing the theoretical beauty of computer science. This course reminds me a lot of the Berkeley course posted a month ago, if anyone wants to see the discussion there: https://news.ycombinator.com/item?id=9838196 https://news.ycombinator.com/item?id=9838196. From what I can tell, the coverage is almost the same, except that the Berkeley course pretty much trades computer architecture for declarative programming and some other briefly-covered topics like machine learning, map reduce, concurrency, etc.
- nnnnnn 11y agoAs a former student of CS5 (the class), I must say it was spectacularly well-run, fun, and educational. Zach Dodds, one of the authors of this book, was a particularly brilliant and inspiring professor. While I'm an advocate for practical eduction, I'm equally an advocate for understanding the principles of your field. This book will much less vocational than your typical code-school/academy/etc and instead focus on building a foundation with which you can build upon. I highly recommend this as a great primer to computer science.
- yasoob 11y agoIs there any way to download it in pdf format?
- daveloyall 11y agohttps://github.com/emhill/117-S15/commits/master/src/morea/materials/cs5book.pdf https://github.com/emhill/117-S15/commits/master/src/morea/m... Might be out of date. Looks like the book was built with Sphinx (documentation tool), so maybe you could find the source and build a fresh copy.
- sontakey 11y agoMudd Alumni here. I had the pleasure of being a student of Professor Ran Libeskind-Hadas and Zach Dodds (who are two of the authors of this book). Amazing group of professors!
- the_cat_kittles 11y agoi would rename the second chapter from "functional programming " to "programming with functions"
- JustSomeNobody 11y agoBefore we move to CS for all, can we at least solve the problem of Computer Literacy for all!? There's a huge population of people who simply cannot effectively use a computer. Can we fix that first? Otherwise we're leaving them behind and that's not right.
- rdudek 11y agoI don't think this is a solvable problem, especially when people just don't care. There are plenty of resources from websites to youtube videos to teach users how to be more computer literate. But instead of learning, people would rather watch someone unbox candy on youtube.
- JustSomeNobody 11y ago"... people would rather watch someone unbox candy on youtube." That made me laugh out loud. Then it made me sad again. Look, I get we can't all know everything. I mean, we can't all be mechanics, right? But every driver should know how to check their fluids, air, etc. Maybe change a tire. Same with computers. I don't think everyone should have to learn to code. I think that's not an ideal scenario. But I do think everyone should be computer literate for some basic definition of computer literate.
- starshadowx2 11y agoThis is exactly what I rant to people. Working IT support at a library where I sometimes help out patrons on public computers, it boggles my mind that many people still don't know how to do simple things like double-click or copy text. We've changed our policy where we don't provide instructional services anymore, only tech support, because it would take up so much of our time trying to teach basic concepts.
- tracker1 11y agoWhy not approach a local user group to offer to do tutorials one Saturday a month? I know a lot of guys at Linux user groups in particular would be willing to help... they may not like helping with mac/linux as much, but many would be happy to do so just the same.
- ggchappell 11y agoThis looks like it would make for a very nice course -- a good middle ground between the hardcore practical course ("let's learn C") and the hardcore theoretical course ("let's do denotational semantics with Scheme" -- or whatever).
- ufo 11y agoThe prime sieve algorithm in chapter 3 is not the real sieve of Eratosthenes. Which is kind of funny because the person who pointed this out to the FP community is also a professor at Harvey Mudd. http://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf http://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf
- hadas 11y agoThank you! We took a liberty here but have just updated the online book to clarify this.
- arctansusan 11y agoAnother Mudd Alum here. I remember being hugely inspired by Christina Alvarado's Intro CS class for 1st-year students. Teaching is really engaging, there aren't any dull moments in the classroom. A typical lecture class consists of explanations interspersed with short interactive quizzes. At end of every semester, the profs at Mudd are all open to getting student feedback to iterate on the curriculum to be better.
- marincounty 11y agoGreat--I think every student should take a CS class! That said, this course suffers from so many CS courses. 1. It's too wordy! 2. As usual, I don't like the layout. 3. Funnel your subjects. (I'll give that a B.) 4. Funnel your paragraphs, or eliminate most of them? 5. Most people(students) find this material extremely dry. Introductory books should be "tight"! They should go through numerous edits? Take out every non-essential word? 6. I haven't yet read an introductory CS text that gets it right? 7. As to exercises? Try to use excercises that the student might have some immediate interest in, or can use in their daily life? For example, instead of some cute game example, show the student how a simple reminder application is programmed? How Google works?(just the basics). Or, how their spellcheck program works? 8. If I was going to write a introductory computer course, after explaining the hardware(that's usually sitting in front of them), I would explain an how operating systems stores their information--"The use, and location of Folders." I would want my students competent in the Command Line before we did any Programming. I would want them to know they can have two folders named the same, but located in different sections of the hard-drive. I would want them competent in finding them, and manipulating them.
- marincounty 11y agoI was too hard with my review--sorry! I was doing some yard work and felt really quilty. I know getting across computer science concepts/theories is terribly difficult. Part of my anger is I don't have a good grasp of CS theory, or why we do someting a particular way? I can get things done, but I'm missing the bigger picture--in many instances? My education into CS has just been following many steps, and listening to videos. I will go back to this free book, and give it a full read. Sorry to the Authors. I was in a bad mood?
- matchu 11y agoI think it's probably solid feedback if you include more tangible action items. What's an example of wordiness in the text? What would be a better phrasing? What don't you like about the layout? Why? Don't feel back about feedback :) Suggestions for improvement are always helpful, especially if you also include the stuff you do like.
- MarkPNeyer 11y agoRan Libeskind-Hadas is an amazing teacher. He really got us exicted about stuff in theoretical computer science. I was actually dissapointed in my advanced algorithms class in grad school because Prof Ran already taught us everything except for skip lists during his enrichment sessions in the summer of 2006.
- techman9 11y agoI'm a current UC San Diego student. It's awesome to see our faculty featured here, particularly Christine Alvarado. She has a fantastic reputation within our CS department and I'm really glad to see she's doing great things and getting recognition outside UCSD as well!
- deleted 11y ago[deleted]
- lynn729 11y agoThis course is a great idea. Since so much of what we do each day is impacted by computers a basic understanding is important for everyone
- rebekah-aimee 11y agoWhat if colleges started offering this as an alternative to the basic MS Word class most schools make everyone take? Then people who didn't know how to use a computer would be too intimidated by it, but students who already knew the basics could move on to this more interesting course. You should still be able to test out, though. That way, if you're totally uninterested, you can test out of the MS Word class and move on. I think there are enough students sufficiently interested in computers that they'd check out the harder course if its name didn't sound too obscure.
- mathattack 11y agoDo schools really make people take an MS Word class? I've never seen anyone have the courage to put that on a resume or transcript.
- mdpopescu 11y agoI've had people show up with Word and Excel on their resumes when I was advertising hiring C# programmers...
- mathattack 11y agoAre these long resumes playing Keyword Bingo, or shorter resumes? I've kept my resume to 1 page and avoid the table stakes skills.
- mdpopescu 11y agoOne, two pages at most. They just had no clue about programming and had to put something in there. Ours is a strange field :)
- mathattack 11y agoIndeed. In this instance a negative keyword filter would be appropriate. :-)