12 ms·
> When he started to explain the assignment it quickly became aware that I wasn’t grasping a thing he was saying. He tried again, and again, and again to explai
by matt_wulfeck 11y ago
> When he started to explain the assignment it quickly became aware that I wasn’t grasping a thing he was saying. He tried again, and again, and again to explain basic concepts to me. He started to become visibly frustrated and impatient with my lack of understanding and everyone in the room kept looking at us.
This is sort of the unspoken problem in computer science. Most people aren't doing it for the first time. It's not uncommon for many people to have started programming on their own in middle school or even earlier. First year computer science is more of a refresher.
Then there's everyone else starting an entry-level class as beginners and getting completely demolished. "How does everyone get this so much better and faster than me?" The answer is because they're not beginners.
- deelowe 11y agoExactly. This is why it's important to teach the general concepts of computing, logic, and programming in grade school.
- Trill-I-Am 11y agoDo you think it's possible to major in computer science in college if you have absolutely no prior experience in programming?
- dietrichepp 11y agoAbsolutely yes, and if it doesn't work at your college then it's a failure of your college.
- MawNicker 11y agoAbsolutely yes. But you'll definitely want awareness of the reality the GP presented. The environment you're in is likely to make you dissatisfied with your own performance... at first.
- nostrademons 11y agoAbsolutely. A number of my coworkers at Google had never done it before college (and some had never done it until after college, going back to CS as a second career). You have to be okay with being "behind" compared to your peers, but if you'd like to be successful long-term in anything, you need to become okay with that anyway. Fashions change, whatever you were good at before becomes obsolete, and you relearn things. Slope is more important than Y-intercept.
- blaenk 11y ago> Slope is more important than Y-intercept. That's nice :)
- nostrademons 11y agoNot my invention. Usually credited to John Ousterhout, although it's been repeated by many: https://www.quora.com/What-are-the-most-profound-life-lessons-from-Stanford-Professor-John-Ousterhout https://www.quora.com/What-are-the-most-profound-life-lesson...
- kps 11y agoI first heard it in the late '80s, in the context of grad school admissions, but perhaps Ousterhout was the first to port it from math to computing.
- petewailes 11y agoI agree with this wholeheartedly. The problem with it is that until you're most of the way towards being at the point where those things meet, it can feel pretty terrible, if you're not mentally good at dealing with being behind. The trick is being able to support those with decent slope while they're still under those who had higher y-intercept so they continue.
- nostrademons 11y agoFor a real treat, try replacing a curve that is fundamentally linear (say, optimizing your salary as an employee) with one that is fundamentally exponential but with a much smaller constant factor (say, founding a startup). Not only will you be below the Y-intercept for a considerable period of time, but you will also have a slope that is indistinguishable from zero. This is probably the biggest killer of startups: it doesn't feel like you're making any progress at all, until you have a sufficiently deep picture of your marketplace to know exactly where to hit it that your competitors aren't, and a sufficiently solid product that your customers realize this.
- echelon 11y agoThis is a very difficult question. I used to be TA for freshman CS, and there was a marked difference in performance and the time it took to complete labs between those who had been hobbyist programmers and those who had never programmed before. It really seemed like there was a vast chasm between the two groups. While I did see complete newbies making A's, it took them considerable effort. I'm not sure they really groked the concepts at that point in time.
- DrJid 11y agoYes. I had no programming experience at all. Never written a single line of code nor even touched a Mac. I'm originally from Ghana. And I was able to get an honors in CS. Start a student group to teach other college students to build mobile apps (appdev.grinnell.edu) and get a dream job at a startup here in SF. So yes! Even with zero experience, I'm certain you can kick ass, if you have the willpower
- inanutshellus 11y agoABSOLUTELY. The trick to it is exactly the point of the original article. You have to not be afraid, and instead interrupt class constantly and ask for explanation. Don't let yourself walk away from even one session with a floating question mark looming over your head. No joke. Don't leave even one class not understanding what was covered.
- saghm 11y agoDefinitely yes! I'm currently a senior studying CS. Many of my classmates freshman year had never written a line of code in their life beforehand. Now, some of the best programmers I know at my school are those same people. If you're passionate about it and willing to put in the effort, then I say go for it!
- wutbrodo 11y agoIt's more than possible. The first line of code I wrote was second semester freshman year, at one of the top CS programs in the world. Google hired me during my senior year of college (a few years ago) and in my last two years there I've been in an actual computer science oriented role. I won't deny that it was a little unnerving in the beginning that everyone else seemed to have a ten year advantage over me, but that hurdle turned out to be 99% psychological.
- bunkat 11y agoOf course it's possible but it seems a little odd. Programming is something that anybody can do with a very modest investment. If you're interested in programming, seems strange to have absolutely no prior experience before getting to college. It's sort of like deciding to be a music major when you've never played an instrument before. How do you know if you even enjoy it before starting down the long path to getting a degree in it?
- tnecniv 11y ago>Programming is something that anybody can do with a very modest investment. Yeah, but most people don't know that. Sure, us nerds figured it out, but most people are shocked that I learned to code at 13. I thought it wasn't that difficult. I don't think I'm smarter than most, I just wasn't scared off by the technical details.
- bunkat 11y agoIf you're not technical enough to type 'learn to program' into Google then I'm not sure how far you'll make it into a CS program. Back in the 80's and early 90's, sure it was a struggle. I remember reading out of date BASIC books trying to figure out how to load my code from floppies, now that was a bit of a headache. These days you can be be learning to code using any number of slick web sites in about 5 minutes.
- slavik81 11y agoI tried learning programming quite a few times back in the '00s, but none of it really made sense until I took the intro to programming course in university. I was too focused on my high school academics (and goofing off) to devote enough time to properly learn to program. Once software became a part of my academics, I found that I got much more better explanations of how things fundamentally work. I also finally had more time to practice.
- deleted 11y ago[deleted]
- 11y ago
- wyldfire 11y agoWithout a doubt it's possible. Of the people who graduated in my CS class, I'd wager fewer than half of us lived in a home with a computer. What you'll find with many computer science curricula is that the science of computing is so abstract that the simple excel macros and other stuff you've already done and perhaps dismissed is actually "programming."
- riyadparvez 11y agoAbsolutely, because I did it.
- jkyle 11y agoI did. Programming oriented courses were my strongest subjects.
- grecy 11y agoAbsolutely. Quite a few people in my Software Engineering program had obviously never done anything more advanced than use Microsoft Word on their first day. Heck, while I loved computers, I'd never been dedicated enough to teach myself a programming language. 4 years later I graduated with Highest Honors, and worked for the DOD.
- kibwen 11y agoLet's not forget that the first generations of computer scientists likely had no experience with programming at all before college, due to computers being such expensive rarities.
- true_religion 11y agoSure. It depends on the program, definitely, but at my university, the CS curriculum was extremely abstract focusing more on logic, algorithms, compilers, basics of hardware processors, language design and software design theory than any practical implementation of the above. In fact, outside of the introduction class, there was never actually a place where they sat down and said "here is where we teach you how to program". The professors mainly taught theory and had the assumption that we'd be able to put it into practice if needed. Luckily we did have lab assignments, and multi-month group projects, so you would pick up some vestiges of professional programming within the 4 years you were there.
- sn9 11y agoHow do you think the first computer scientists and programmers learned it? Or, for that matter, anyone who picks up programming? (My own mother started in her late 20s or early 30s on punch cards, having never even touched a computer.) Everyone starts at the same place. And nowadays you don't even have to wait to go to college to have your first brush with programming. The best intro to programming online in my opinion is Harvard's CS50x on edx.org. It's meant to be an introduction to programming for people who've never even written a for-loop. CS50x uses C, but there are plenty of good introductions with other languages. Google Think Python for a free pdf of an introductory programming book that teaches Python and how to think like a programmer. Following that up with Udacity's Intro to CS course is a great way to get your feet wet. There are so many ways to learn and so many places to ask questions when you get stuck. And it's such an intellectually rewarding pursuit! Come join us!
- madaxe_again 11y agoUh, they taught themselves. You think Alan Turing or Ada Lovelace went to college and studied computer science?
- jlembeck 11y agoI did and many of my classmates did as well (graduated in 2010).
- fapjacks 11y agoAbsolutely! I have a lifelong friend that didn't pick up programming until his thirties when he just decided on a whim to enroll in computer science. This despite our being friends and my having been a programmer most of my life. He's a great programmer, too!
- hobs 11y agoI imagine the first teachers of programming had the same problem. They are often considered the best and brightest as a result.
- thesimpsons1022 11y agoI had no experience and I ended up interning at a couple good companies (Big Four) and ended up with a Masters degree and a great job.
- deleted 11y ago[deleted]
- mfukar 11y agoYes. No undergrad CS course assumes prior experience.
- taneq 11y agoSome of the people I went to university with even graduated with absolutely no experience in programming. It was rather disheartening.
- Maken 11y agoOf course. If a university computer science course is unable to teach its students how to program, there is something wrong with the course, not its students.
- Cthulhu_ 11y agoIt'll make things more difficult, I think - doubly so if you've missed computers or internet 101 - but not impossible. I have a good colleague (android / web developer) who majored in electronics engineering. Others are self-taught, although that may imply they've been using computers for a long time already. I'd have to ask around for more of such examples.
- snowwrestler 11y agoThis might not be a popular opinion here, but computer science is not the hardest discipline that students can major in at college. Physics, biology, chemistry, and pre-med come to mind. How many students majoring in biology or pre-med have personal "hobby" experience before starting college? Probably not many. The fact that so many high schoolers can pick up and become productive at programming is in part evidence that programming is not the most complicated thing in the world.
- samfisher83 11y agoYou see people ask basic questions on SO. And people will downvote them to oblivion.
- PeCaN 11y agoBecause they're usually poorly phrased with no effort put into them at all and generally it's fairly clear the asker hasn't even checked if the question is asked before. All the basic questions have pretty much been answered quite thoroughly already. Any beginner is extremely unlikely to ask something that someone else hasn't already thought of.
- smithkl42 11y agoBut beginners often don't know what to ask or how, or even what to Google for. You need a year in the field just to pick up the right terms to type into a search engine to point you in the right direction.
- PeCaN 11y agoI'd debate that a bit. Personally I hardly had to ask any questions when I was a beginner, and I'm not even particularly good with Google. Relevant vocabulary can be picked up from tutorials quite quickly. Though Google does seem a little worse at programming queries now than it was circa 2009. :/
- fapjacks 11y agoI support your position 100%. There was no Google when I had questions. I cut my teeth on pointers in C with nothing but the K&R book. That people can't be bothered to put some effort into that miraculous white textbox doesn't make me feel any pity for them. Google is good enough just literally typing what you're saying with your mouth into the search bar. The other thing here I feel pretty strongly about is that programming has a barrier to entry, and that barrier to entry will not go away until robots are writing software. In twenty years of programming, I have met people that cannot think in that way, try as they might. At some point, people will hit a test of wherewithal. Their ability to reason and think logically about pure abstractions will be put to the test. Whether they fail the test in their first semester, their first SO question, or their first time trying to Google something, trying to do something about it is just shifting the time when that happens. There's a reason programmers have the salaries we do.
- strommen 11y agoAt my university (Minnesota), the intro-level programming class for CS majors was based on the SICP textbook and all the assignments were in Scheme. One really nice side effect of this was to level the playing field with regard to prior programming experience - even the students with industry experience were starting from scratch with car and cdr.
- djsumdog 11y agoThat sounds like an awesome program. Functional languages weren't even an option at my University. When I was graduating, they were just changing things around so that you had theory classes before programming introduction classes. I kinda did this by accident (took Discrete Maths/161 before I started 201 programming) and I think it's a really good idea. You get students use to the idea of sets, basic logical operators and the foundations they need before dropping them straight into programming.
- microcolonel 11y agoI don't see how that would make up for anything; especially given how dynamic and list-/function-oriented JavaScript, the most common language these days, is. In a situation like that, I would be willing to assume that those who you thought were experienced were almost as lost in any event as the beginners; and no amount of language familiarity would help them.
- zaqwsxwsxzaq 11y agoI'd be willing to assume that the instructor and authors of the curriculum, after many years of observing such phenomena in the wild, might've anticipated your exact assumptions, and designed against it. But yeah, on the first day of school, children tend to puff up their egos and put on airs, and some people might've exuded a soon-to-be-deflated sense of overconfidence, when they weren't actually very experienced after all. Both are possibilities. BTW, just as those supposedly inexperienced students found out, you know what happens when you assume... right?
- durandal1 11y ago16 years ago I started a CS education - while I dropped out after 6 months, one interesting observation was that the first courses used SML. Their reasoning was exactly that - both language and paradigm was new to pretty much everyone, which served as an equalizer.
- superuser2 11y agoMy school had a nice solution for this: split the already competent programmers off into an Honors class to learn something completely new (Haskell) and bring the beginners up to speed in Scheme. Both are challenged appropriately, and neither group makes the other feel stupid. The classes converge after the intro sequence and there is no real difference from there on out.
- agumonkey 11y agoAlso, do not hesitate to question the teaching material relatively to your needs. Don't cave on "it's trivial duh" look teachers can give you. I spent years trying to grasp linear algebra with a very formal textbook, just bought another book on the subject, everything became easy. I wish I had the brain for the more formal style but if I ditched the first book earlier I'd be finished since long.
- rdtsc 11y ago> "it's trivial duh" I've learned to not ever say "this is easy" to anyone when I am teaching them something. That sounds perhaps like an encouragement -- like, "you are almost there" kind of thing. but it often ends up as an insult to their effort or intelligence.
- agumonkey 11y agoI can assure that in college no T.A ever meant it as a form of motivation. Most of these guys were in class to fill in for duty and weren't interesting in teaching concepts. Only one guy was passionated and held extra classes for us morons. He managed to bring the laziest weakest guys on sunday morning sessions. Probably my most beloved teacher in all college years. To go back to your point, never stating the difficulty but focusing on describing the concepts and aiming at the student blind spots and/or communication issues (how many times an issue ends up in a simple "oh that's what you meant..")
- kevinnk 11y ago> I can assure that in college no T.A ever meant it as a form of motivation. I (unfortunately) did this as a T.A. in college. Despite being well versed in the material and caring quite a bit about trying to teach I used the "this is easy!" line as well as falling into many other teaching traps. I think part of the problem was that I never had a problem learning the material (I came into college with a fair amount of prior experience) so it was hard to relate when people had trouble. The other problem was without being formally taught about how to teach, it's hard to get feedback on what's helpful and what's counterproductive. For instance, it wasn't until I took a class with my girlfriend that I realized how much I interrupted or talked over other students when they asked questions. Without direct feedback I would probably still be doing it.
- personjerry 11y agoOne thing I like about UC Berkeley is that we have a CS 10 class which is open to anyone and is actually pre-CS. It teaches the very basic concepts of programming with Snap, a drag and drop programming language. That way people who haven't had that entry level stuff might catch up. A lot of it is reiterated in the first CS class too, in Python (a notably high level scripting language), but they also move on to some interesting things like recursion.
- oxplot 11y agoI see the reason for having beginners in any fields at start of college a failure of the primary and secondary education, not that of the student. An effective education system (don't know if one exists) should expose kids to enough variation of what's out there, preferably with real world hands-on work so majority develop find their interest long before college, which is supposed to discipline young people in their existing area of interest.
- hkmurakami 11y agoI definitely had this experience myself. By the way Harvey Mudd seems to have solved the issue. "With leadership from the college president and college-wide support, Harvey Mudd increased the percentage of women graduating from its computing program from 12 percent to approximately 40 percent in five years. This dramatic increase was accomplished through three major changes: revising the introductory computing course and splitting it into two levels divided by experience, providing research opportunities for undergraduates after their first year in college, and taking female students to the Grace Hopper Celebration of Women in Computing conference." https://www.hmc.edu/about-hmc/2015/03/26/new-report-on-women-in-stem-features-harvey-mudds-cs-program/ https://www.hmc.edu/about-hmc/2015/03/26/new-report-on-women...
- 0xCMP 11y agoYea I have recommended these kinds of changes to my university professors a couple times. I haven't cared enough to make noise about it, but it literally has everything to do with the intro course. You need your best professors and resources on the first 2-3 courses and everyone who comes out of those courses needs to "get it." Otherwise, everything afterward suffers and waters down. And without that stuff after (algorithms, operating systems, OOP, etc.) most students leave completely unprepared and barely understanding the stuff from those first few classes. And whoops, it's 4 years later.
- grayclhn 11y agoIf you care about this, talk to the department chair and administrators (deans). Also talk to your student government and try to get other students on board. Individual faculty members don't tend to have a lot of influence on the design of the undergraduate program.
- peteretep 11y agoIt's a shame you can't get credit for your previous experience, and join in Year 2. That would allow the real beginners to get confident in the first year, too. I have an incredibly smart friend who went to Oxford to do maths. His "competition" at Eton had sat the maths A-Level a year before normal, and had spent the last year studying university-level texts, and he was playing catch-up. Not sure who that benefits.
- Nullabillity 11y agoIMO the problem seems to be that intro-level classes don't seem to fit anyone. The people who have programmed before get bored and cruise through, while it still mostly just ends up confusing the people who go in without experience.
- facepalm 11y agoAlso not convinced that it is true. While I had prior programming experience from C64 times, I still remember being stuck in vim in my early days, having to ask my neighbor how to exit to the shell again... And CS should be more abstract anyway. Coding assembly for the C64 didn't teach me anything about O-Notation. It is a little head start to already know programming, but CS shouldn't be about programming most of the time anyway.
- hasenj 11y agoI don't think that's necessarily true. When I started learning to program I didn't have it "broken down" for me to the tiny tiny details. I just read books/tutorials. I think it's the same for most of the people who were exposed to programming before college.
- azernik 11y agoUC Berkeley as of 5-7 years ago had a decent solution - there was the intro class, where having no programming experience seemed to leave some students treading water, and then there was the no-siree-definitely-not-remedial class that you could optionally take before the intro class, which was well-publicized and pushed hard by the department.