Taking AP CS in high school may give you a good introduction to computer science, but it doesn’t provide advanced placement in CS at Brown. It’s really important that you take one of our intro sequences. If you’ve had no CS in high school, either of 150 or 170 are the best courses to start with. If you’ve had a little CS in high school, perhaps one of the AP courses, it is still the case that either 150 or 170 are the best courses to start with. If you’ve had a fair amount of CS in high school, you might consider our accelerated intro to CS, 190. Rather than just a placement exam, this course has a placement process, given in the summer, that combines the study of online material with an online exam. Doing well in this process is the only way to be admitted into 190.
We’re willing to discuss with you placement out of 190 only if you’ve done both of the following:
you’ve taken a substantial amount of CS in high school that is equivalent to one of our introductory sequences (150/160 or 170/180 or 190) (note that it’s unlikely you’ve done this unless you’ve taken college courses while in high school; even so, courses offered at many colleges are not the equivalent of our courses -- this is why you’re attending Brown!)
you’ve passed the placement process for 190
Otherwise, you must take 190 (or one of the other intro sequences). If we do allow you to skip our intro courses (and you concentrate in CS), you must take two additional, more advanced CS courses in their place.
If you have an exceptional background in CS and place into 019, you could also perhaps take a more advanced course at the same time. Possibilities include CSCI 330 (Intro to Computer Systems) and CSCI 1010 (Theory of Computation).
CSCI 150 covers object-oriented design and 2D graphical user interfaces using Java. It’s followed by CSCI 160, which covers algorithms and data structures using Java and Python. Even if you’ve had Java in high school, it’s likely you’ll find 150 to be a challenging course. But if you’d prefer to do something different, take CSCI 170.
CSCI 170 and its follow-on course CSCI 180 cover functional programming using languages including Racket and OCaml, followed (in 180) by object-oriented programming using Java and Scala. Algorithms and data structures are covered throughout both semesters.
CSCI 190 covers functional programming using the programming language Pyret, as well as algorithms and data structures. It moves at a much faster pace than the other intro courses. Students completing 190 may take any more advanced CS course as the second course of their intro sequence. Since 190 does not cover object-oriented programming, we allow students to take 180 after 190 as their second intro course.
How do you choose between 150/160 and 170/180? First of all, there’s no wrong choice. Both course sequences lead you into the rest of our curriculum. You might shop the first classes of both to see which instructor’s style you prefer. In 150 you will write sophisticated applications, mostly games, such as Tetris, building on existing software packages, e.g., to do graphics. In contrast, in 170 you don’t build on existing software packages, but instead write essentially everything yourself. Thus you won’t produce a Tetris game, but you’ll understand every line of code used in your assignments, because you wrote them yourself. Neither course sequence is more advanced than the other. They are simply alternative approaches to learning programming, algorithms, and data structures.
We are developing a three-course intro sequence (111, 112, and 113) that spreads the intro-sequence content over three semesters to help students better accommodate other courses or pursuits. The sequence orders content differently than the other sequences do, so that each course is a useful stopping point for students seeking to apply CS to other disciplines. CSCI 111 is taught in both fall and spring semesters in the 2019/2020 academic year. We plan to introduce 112 in Spring 2020. Once 113 is being taught, the three-course sequence may be used in place of our other intro sequences. Until this happens, students who’ve taken and done well in CSCI 111 and who are interested in becoming concentrators may participate in a “bridge” program over winter break (via the internet) that will get them ready to take CSCI 180 in the spring. Once they have completed 180, they will be considered to have completed a full intro sequence.