CS for All(cs.hmc.edu) |
CS for All(cs.hmc.edu) |
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.
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/201...
[1] albeit one with a massively growing CS curriculum that is on track to be its own major, instead of part of the math department
> We’re also unique because we are a liberal arts college.
Traditionally, the "liberal arts" include mathematics and physical sciences alongside arts, humanities and social sciences.
The course videos are all available on Youtube: https://www.youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w/pla... and I believe the "Systematic Program Design" courses on EdX are an expanded version of the course.
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.
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. 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.
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.
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.
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.
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.
At least they let you test out. The only reason I know Access is in the curriculum is that I BSed my way through that part of the test. Probably the reason it was there was so more people would have to spend money on taking the class.
Often times, when people say "computer literacy", they mean popular software competency. It often means ad-hoc comfort with specific software interfaces and solutions.
So if I've learned the steps necessary to attach files into Gmail, browse in Safari, download and remove apps, use Dropbox, and so on, then I'm considered computer literate. At one time, employees were expected to type in DOS commands. Now command line is considered hacker territory.
Almost everyone in the world is living very high away from computer science, and instead they are living in the world of corporate designers. They are living in a world where people at Apple build app experiences called "Mail", "Calendar", "Reminders", and you swipe left to delete. Soon you'll be asking Cortana or Siri to do things for you.
In that designer world of proprietary software and aesthetic trends, what does computer literacy mean? It sounds like a class on Microsoft Word or Outlook. It sounds like a class on how to use the App Store.
I know MD's who have no love or interest in computers at all. No interest in becoming "computer literate" as defined by people like us. These are not dinosaurs. Yet, some of them live in a world where pen-and-paper are more efficient and safer than paging through text boxes in a shitty UI on an equally shitty medical data entry program.
Some of them couldn't scan-and-email a document if their lives depended on it. They screw-up sending links to websites and have crap spread all over their computers rather than organized in a sensible way within a directory structure.
This is either a case of literacy or one where computers and UI design still have a lot to be desired before any human being can walk-up to a computer and get things done. And, BTW, this isn't a Mac vs. PC issue as these people are equally clueless regardless of platform.
I know music teachers who can barely send email and school teachers who get flustered within anything more complex than an iPad.
None of these people are stupid.
And, to some extent, I am not sure anyone needs to actively pursue a "solution". Most of this will resolve itself with generations of people who grew up with computers. Sad to put it that way, but I think there might be a degree of truth in that.
I've made this comment multiple times: I told my son that his generation is likely to be the last to actually drive a car. It is almost guaranteed that his kids will have no need to drive a car and will, instead, use fully automated vehicles. A human driving a car might become a recreational activity. Two hundred years ago nobody would have though of running or jogging as a recreational activity. Today we do.
The point is, things change, some are left behind and some adapt.
Well then we should speed it up somehow. People die due to shoddy writing and missing/unindexed/unsearchable paperwork by MDs. Revoke the licenses of those who refuse to join the 21st century.
I think that being a med school student today probably means osmosis of cultural information from other med students, including student solutions like Google Drive and Dropbox, as well as Tinder. Along the way, that probably means comfort with email, chat, downloading apps and files, browsing, buying, PDF reading, and so on.
This is only "CS for All" Harvey Mudd students; I don't think real computer illiteracy problem there.
> There's a huge population of people who simply cannot effectively use a computer. Can we fix that first?
If you mean to shift topic from what "CS for All" means in the title to "CS for All in the world", obviously, that inherently requires solving Computer Literacy for all. So, yes, we can solve that first, if we can solve either at all.
If you mean "CS for All" in the sense actually used in the title, then, demonstrably, no. Since the source linked from the title is the solution to "CS for All" in the sense used in the title, and yet, as you note, Computer Literacy for all (in the broader sense of "all" that you wish it solved for) is not solved.
Teach touch-typing!
How did I actually learn to touch-type? AOL Instant Messenger.
I don't think it mattered in programming classes that I could touch type, just meant I could multi task distractions easier like being on IRC during lectures and appearing to be paying attention.
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.
I see no reason that they can't be tackled concurrently!
A huge proportion of the population does not know how to manage a few acres of crops, raise chicken and cows for milk and eggs, etc.
How about we try to solve them simultaneously?
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?
Don't feel back about feedback :) Suggestions for improvement are always helpful, especially if you also include the stuff you do like.
Yes! I agree wholeheartedly. I took an intro to CS course at UBC which is similar to this (I talked about it in a comment thread above) and this was a big thing I loved about having new exercises created specifically for that course. I got to create space invaders (I found that super fun), newer years create a snake game. In addition, I created a simple graph crawler which used Google a lot as a way to tie in what we were creating with what Google does. Now, they create part of a client-server application which resembles Twitter or an IM program. We also created a minmax algorithm for pawns which was really cool since it showed how an NPC could ostensibly be made in a game, although that has been dropped since. It's all really cool examples that simplify something that exists in real life, and really helps engage students a lot more.
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.
My form was not perfect before taking the class. I would often do something slightly weird with my right hand where my it would "walk" to slightly incorrect positions to reach keys that my other hand should be hitting.
My typing teacher put covers over the keyboard so we couldn't see our hands and then had us do typing drills. She would strictly enforce that we maintain our hands on the correct home-row position, wrist positioning, etc.
After a semester of this class, despite an initial drop in my speed, I can now touch type correctly and my speed is now faster than ever.
I work with professional programmers who hunt and peck and it drives me crazy. For something that you interact with daily and is the instrument of your profession, taking an hour a day for a few months is a no brainer to perfect your form.
This wikibook seems to cover the same topics: https://en.wikibooks.org/wiki/Signals_and_Systems
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.
In fact, I think we are trying to solve them simultaneously.
I've kept my resume to 1 page and avoid the table stakes skills.