Computer Science Workload

<p>I’m a future Bear interested in Computer Science.</p>

<p>Can any current students or alumni comment on the structure and difficulty of the program? I’m technologically inclined, but don’t have experience with coding, etc.</p>

<p>Any information would be really helpful. Thanks in advance!</p>

<p>It depends heavily on whether you pursue an Sc.B. or an A.B. My experience is atypical because I tend not to take the coding-intensive courses (in many of which, 15+ hours of work a week is perfectly reasonable), but I’ve found taking 1 course a term (for the A.B. or any joint Sc.B.) to be fine, but I couldn’t imagine taking multiple CS courses in the same term. I’d lose the balance between subjects that way. With no programming experience, you’d take either CS15-16 or CS17-18. bother are good classes but approach the topic from very different perspectives. CS17-18 students get more experience with a variety of programming languages, but in my experience (having TAed and HTAed the 3rd semester course) are weaker with Java (the primary language of many courses in the department). CS15 does a lot with graphics and 16 does a lot with theory (and does a good job with it), but they have much less exposure to other languages. Moreover, 15’s approach to Java means that they won’t cover certain things that higher level classes assume as prior knowledge (exception handling, static methods, etc.)</p>

<p>In terms of structure, there are 3 levels of courses. I’ve commented on the two relevant intro sequences above (19 is a 3rd option but assumes a good amount of prior programming knowledge). There are then several intermediate level courses. They’re currently in flux, but my understanding is that right now, students must choose several of them, including a mathy one and a non-mathy one. These include CS22, which covers proofs, discrete structures, and probability, CS45, which covers a bit of probability, CS32, the (immensely time consuming) software engineering course, CS33, the intro systems course, CS53, the linear algebra for CS course, and CS51, the computational theory course. Which you’d focus on depends on what you hope to get out of the department, but 32 is pretty useful for internships, as painful as it tends to make the semester you take it in. If you’re more interested in theory and algorithms, you’d probably focus on 22 and 51, while 33 would be really important for systems programming (like the operating systems course).</p>

<p>Finally, there are a variety of upper level courses. Sc.B. candidates must take courses in 3 different areas (AI, Theory, and Systems) and have 2 pairs of closely related courses. The A.B. has no distribution requirement but does require 1 pair of closely related courses. These range from not requiring much time (CS146, computational linguistics) to courses that will take all of your time (CS190, software system design). As a general rule, 10 hours a week for any of these classes is not an unreasonable expectation. Some will require less work, many will require more.</p>

<p>There is an immense TA program that serves as a support system. Each class holds between 1 and 4 TA office hours per 10 students each week (so CS15, for instance, holds something like 100 office hours a week). With a few exceptions, the TAs really run the courses, though the professors give the lectures and some of them will grade as well. The professors I’ve worked most closely with are leaving after this year, but they’ve generally had the TAs do most of the work writing assignments and handling administrative tasks. So on the one hand, you’ll probably be graded by and to an extent taught by undergrad TAs who excelled in the course, but on the other hand, this allows them to give more feedback and more in-depth assignments, since it would be completely infeasible for the professor and maybe 1 grad TA to grade 250 of anything.</p>