This AFQ (Anticipated Frequent Questions) should cover most of your questions. Because I have tried to cover most questions I have gotten and am likely to have, I would appreciate it if you would read this in its entirety first.
Note: All course numbers below refer to computer science (CSCI) courses: e.g., 0190 means CSCI 0190.
Q: How do I enroll in this course?
There is only one way to get into 0190: to take a placement exam. The placement exam is now over, so only those who pass the exam will be permitted to take it.
Q: Is there any other way of getting into cs019?
No, sorry. We have tried different options in the past, and evolve the entrance structure based on our findings.
Q: Will the placement exam be effective in helping me decide which class to take?
We believe so. It’s based on past placement activities that have been found helpful through qualitative and quantitative checks.
Q: If I pass the exam, do I have to take 0190?
No! You will have “shopping period” to finalize which course you want to take. You can’t use this period to get into 0190, but you can choose to take a different course instead.
If you choose to take a different course, we will not hold this
against you in any way. You don’t have to inform us or even justify
your choice. Brown CS is virtually unique in offering three
different introductory offerings leading to the concentration—
Q: I heard 0190 is limited in size. Is that true?
A: No! There is no size limit on 0190: anyone who does well will get in. Therefore, you are not competing with your classmates.
Q: I’ve also heard that …
The only definitive source of information about 0190 is this site.
A few students do make various sweeping claims about aspects of 0190. Most of these are based at best on incomplete information. Please ignore them (or trust them at your peril, but please understand we won’t have sympathy for any decisions you make based on rumors).
Q: How bad is the workload?
Q: What is the content of 0190?
A: In principle, 0190 is an amalgam of 0150/0160 and 0170/0180. It was supposed to cover the entire first year curriculum. In practice, however, this is not possible with the available time. Nevertheless, 0190 does cover all the basic expectations of the first year (with one important exception, below), namely: teaching you a rigorous, structured program design methodology; giving you several useful programming skills; teaching you about algorithm and data structure design; teaching you about algorithm analysis; explaining trade-offs inspired by these analyses; and teaching you several basic algorithms and data structures covering linear data, tree-shaped data, and graph-shaped data.
What 0190 does not cover is: these topics in as much depth as those other courses can; all the algorithms and data structures within the above list of topics that they do; some of the more sophisticated or nuanced analyses; and some topics that are usually taught but that we’ve decided are not required of the first year sequences. The big thing that 0190 does not teach (that is required of the year-long sequences) is Java. We assume that you either have prior Java experience or, given a semester of programming, can teach it to yourself (using textbooks, on-line tutorials, etc.) over winter break. Or, of course, you can take 0180 in the spring (see below).
Q: What should I do after 0190?
A: After you have completed 0190, you have numerous options.
First of all, you are welcome to take any course that requires the intro “sequences” (0150-0160, 0170-0180, or 0190) as a prerequisite. This can even include upper-level (1000-level) courses. Yes, some 0190 students start taking upper-level courses in their very second semester of college! Talk to the course TAs; many of them have done just that.
Second, many students take 0320, but not everyone does.
Third, you can also take 0180.
In particular, if you have some Java background, or can acquire it over winter break, you are ready to move on. If you don’t have it and would rather be taught it by a course, you can take 0180, which is the usual follow-up course for 0170 students. There will be some overlap between what you do in 0190 and what you will see later in 0180, but that should just make you better at that material. Indeed, another good reason why students take 0180 is to get reinforcement of the algorithms and data structures content: seeing it again, from a different perspective, and in more depth, is often very helpful, and this material is so important that having it thoroughly under your belt is a good idea.
In general, talk to your academic advisor and to people in the department, especially if you decide to follow an unconventional path. There may be subtle dependencies between courses that you may not appreciate, and talking to people will help you avoid getting into a mess later on.
Q: If I’ve taken 0150 or 0170 before, should I take 0190?
A: No. You should instead proceed to the next course in that sequence, namely 0160 or 0180. You will learn more from them.
Q: If I’ve taken 0160 or 0180 before, should I take 0190?
A: No. You should instead proceed with the rest of the curriculum.
Q: If I’ve already taken 0020, 0030, 0040, or 0931, should I take 0190?
A: 0190 may indeed make a lot of sense. You will still need to take the placement exam. If you don’t place in, please take one of the other two introductory courses (0150 or 0170).
Q: What’s different this year?
The structure of 0190 is going to be vastly different this year, running for the entire semester instead of two months. This will have an impact on almost every aspect of the course. The good news is, you don’t have to keep track of anything. Everything you need to know, you will be told by us. This question is only here for those who try to prepare in advance and then get confused because their information is outdated. A short, perhaps better, version of this answer would be: Yes, things have changed (as they do every year); please pay attention, and you’ll be fine.
Q: I have a question not answered above! Where do I send it?
A: Address it to a professor.