8 ms·
When I started college, I thought I could fly through the intro CS courses. Within the first week the professor had completely reset my understanding of compute
by teucris 4y ago
When I started college, I thought I could fly through the intro CS courses. Within the first week the professor had completely reset my understanding of computer science, rebuilding it from the ground up using purely functional concepts. I’m incredibly grateful I could not test out of that class. I would have done so in a heartbeat and missed out on the most important lessons I’d need for my career.
- _the_inflator 4y agoSame here. I came from the demo scene and was disgusted by the thought of having to sit along total beginners, because hey, I had demos ranked in the charts. CS is a totally different beast and I am glad about the humble experiences around CS. I might not totally agree with all the educators tell you, especially around OOP, however especially the mathematics around CS was impressive and very helpful.
- vidarh 4y agoOne of of the TA's when I did CS was a member of the Crusaders [1]. We had a lot of interesting discussions of the difference between demo-style coding and CS... [1] https://demozoo.org/groups/12/ https://demozoo.org/groups/12/
- Jensson 4y agoBut as long as you know the math it is easy to self learn the other parts of computer science. I just studied physics and math in college and self learned the rest and learned algorithms, compilers, distributed systems etc on my own and have worked on those at Google and never had a time where someone knew something they learned in CS that I didn't know. It was the opposite, since when I self learned I went through every CS topic you can take I often knew a lot of CS things that the CS grads didn't know since they were limited in how many credits they could take. I know many who took a similar route as me, but I've never met anyone who self learned math to a reasonable level. And since math is a very small part of a CS degree you could learn all of it in 1-2 semesters, so the optimal way to learn computer science would be to take 1-2 semesters of college math and spend the rest self learning. I bet you'd get a better understanding that way in much less time than it takes to go through a CS degree.
- treeman79 4y agoThings are different now. I spent my intro class constantly correcting the instructor.
- vidarh 4y agoThe approach when I did CS seems pretty reasonable: Lectures were attendance entirely optional for most courses (exceptions were some courses with small number of places; e.g. I did a "French for sciences" class where attendance was compulsory), and for the intro course I showed up to the first and last lecture, but you had some compulsory lessons in smaller groups and a couple of compulsory group projects. I got to save plenty of time by opting out of most of the lectures, but the groups and projects gave you feedback if you started skipping too much (something I learned in the introductory maths course that I also first thought I could get away with not going to every lecture for) and forced you to read at least the main set books so you got a good idea of whether it was material you understood. It's indeed easy to think you know more than you do, but at the same time, sometimes you do know exactly what you know - been in both situations.
- daniel-cussen 4y agoLike why bother going to college to skip the in-person classes? Might as well just buy books and work through them and save money. Make yourself a bookcase. That's cool. Not "well-educated", a term I hate, well-read. Though you do at some point have to interact with the medium for real, can't just read about martial arts. At that point hire a tutor--in-person classes. Matt Damon as the protagonist of Good Will Hunting: "You wasted $150,000 on an education you coulda got for $1.50 in late fees at the public library." That wasn't true before the pandemic but without in-person classes it is absolutely true.
- vidarh 4y agoBecause there were other classes more worth my time, and so by skipping the in-person classes of subjects I needed to take but where I knew the material well I could take a higher course load and get more of the things I actually learned new material from. By the time I started university, I'd been programming for 13 years, I'd done paid freelance development jobs, and written my first compiler, and I'd done more advanced stuff than the first several semesters worth of classes. I had gaps, and I filled them with the group work and books, but there was no value to me in the in-person lectures for the introductory computer science courses.
- dkersten 4y agoI had the opposite for the intro to programming class. Sure, I learned a language I didn’t know (but that took like a week tops) but all the actually programming topics were things I learned years ago. It made me very bored and gave me a tendency to skip class, which is a bad habit to fall into. The other intro courses (eg computer architecture, which taught assembler) were great though, even if I found them easy due to prior knowledge. Unfortunately that experiences doesn’t give a clear line for what to test out of and what not. I bet I could have passed the computer architecture one too, but I would have missed out, while the programming one would have been best if I used the time for something else (I mostly did, but there were lab sessions that were graded and couldn’t be easily skipped)
- jiggawatts 4y agoOur “week 6” assignment was to implement optical character recognition (OCR) in Haskell, a lazy pure functional language. That assignment blew my mind!
- bschne 4y agoIs that online somewhere? Sounds like a fun thing to try!
- jiggawatts 4y agoThis was decades ago, so I doubt it! The lecturer pre-generated small black & white square bitmaps of single characters from a sample set of fonts to use as aids during development. (Just the lower case letters a to m.) Then your mark was the percentage your OCR could recognise from a much larger set generated from about a thousand fonts. In the same course the next major project was to make an AI for the card game Hearts. This is a four-player game, and the project materials included an automated tester that could be given any 4 AIs and would score them against each other. In the labs we would battle our AIs while developing them. I ended up getting the second highest score out of a class of three hundred students and I still don't know how to play that game well. (I got the AI to teach itself the probability tables for optimal play, which I didn't memorise.)
- bschne 4y agoI'm just struck by how cool those assignments are — I feel like this might be one of the biggest differences in school quality, most of the stuff I've had to do at an unremarkable school felt a lot more like "fake problems", but this OTOH sounds like something that would actually get me a lot more motivated even if I had no clue where to begin at first
- jiggawatts 4y agoThat lecturer was spectacularly good at teaching, and stood out from the rest of the pack so much that it was almost hilarious. He used a digital projector in an era where that was still rare in even computer science courses so that he could demonstrate the basics of the edit-build-debug cycle. He'd deliberately leave small errors in the code to "fix" and he'd get the class involved with suggestions on where to look and what to try. All of his projects were competitive, because it got the students much more engaged if they were racing each other. I believe the year after mine had to play a monopoly-style game where trucks were going around a "game board" and could buy and sell stuff for profit, could run out of fuel, borrow money, etc... Meanwhile all the other lecturers would drone on and scribble unreadable gibberish on a blackboard. We had one lecturer give us a final exam where half the marks depended on converting 7 lines of C to assembly, except that 7 lines had 5 errors in it. Two of the lines were just the braces, which means effectively every line was faulty.
- kristiandupont 4y agoPretty much the same situation for me. I was already writing C++ professionally and had embarrassingly high thoughts of myself. The first language we started with was SML and for a good couple of months I just laughed at this stupid language with its silly and unnecessary limitations. It wasn't until we had to implement a parser in it, something I coincidentally had struggled with on my own, that I started to realize that I was dealing with a different paradigm, and a very powerful one at that. I was less cocky after that.
- sporkland 4y agoSimilar not same situation, but different outcome. Had done hobby programming in high school, read a bunch of books, took a junior college course on C. Got to undergrad. Followed the speed limit, took intro to programming course. 450 person class, 1000 person wait-list. 75% of the class did not pass. Only attended two lectures, hand written programming finals. Never lost a point. It wasn't until the 3rd year programming languages class that we wrote minimal lisp interpreters in scheme and did crazy stuff in prolog that I had that rewiring sensation. Not trying to brag, just putting this here for others reading to say that not every intro to programming course speed limit is worth it.