This AFQ (Anticipated Frequent Questions) should cover most of your questions. Please only ask questions after you’ve read the document below and not found a response to your query.
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?
A: All students who want to take 0190 must initially enroll in and attend 0170, and complete its regular homeworks. There will be supplemental homeworks given for students who wish to determine whether they should take 0190 instead. Those who do well on the regular 0170 homeworks, and are successful at the supplemental homeworks, will be invited to enroll in 0190.
0190 will separate from 0170 on Wednesday, October 12. When the classes separate, 0190 will meet at the same time (MWF 10-11) in a different room (CIT 368: map, directions). Until then, you will be a regular 0170 student and you must go to wherever 0170 meets.
Q: Are the supplemental homeworks effective?
A: Yes. Both qualitative and quantiative checks indicate that the supplements are a good predictor of success in 0190.
Q: Help! I didn’t do well on one of the supplements! What do I do now?
A: Keep calm and carry on (with the supplements). We find that students stop doing the supplements too early when they should have kept going. We care about your overall progression, so if you can pick up your performance, that’s fine. Don’t panic, all is not lost!
Q: I’ve heard that to get into 0190, I need to have …. Is that correct?
A: Most students who create rumors of how to get into 0190 are working at best with faulty data, and often from a point of complete ignorance. Unfortunately, every year students feel a need to create these rumors anyway. (Presumably it makes them feel knowledgeable, and also bestows them with some kind of power and standing with incoming students.) Sometimes they may think they know because of something that happened to them (though more often it’s based on what supposedly happened to someone else), but that doesn’t mean they have all the facts, and they don’t.
Therefore, please do not believe anything you hear about the 0190 entry requirements. If you need to talk to someone about how you’re doing, please talk to the 0190 course staff, not anyone else. Not even the 0170 staff know about 0190.
Q: Is 0190 limited in size?
A: No! There is no size limit on 0190: anyone who does well will get in. Therefore, you are not competing with your classmates. Of course, you should not share your solutions with them (be sure to follow the honesty policy of 0170), but it does mean the supplements do not disrupt the camaraderie that characterizes our department’s culture.
Q: How bad is the workload?
Q: If I complete 0190, what course will my final transcript indicate?
A: Assuming you didn’t or don’t separately take 0170 also, your final transcript will show only 0190. There will be no record of your initial enrollment in 0170 in your official external Brown transcript. We will work with the registrar’s office to automatically switch the enrollment of 0190 students from 0170.
Note: Though your transfer from 0170 to 0190 will be done smoothly, you cannot change your grade option at that time. If you’ve started to take 0170 pass/fail, for instance, you will have to do the same for 0190.
Q: Is there any other way of getting into cs019?
A: No. And the current system is good for you. If you come in with some computer science background, it gives you a way to gently determine your level of ability and pick the course that is best for you. If you come in with no computer science background, you may still benefit from the accelerated course; you can find that out during the first month.
If we start 0190 too soon, students with insufficient (or no) computing background would simply not have the confidence to know they would do well in 0190. On the other hand, those with computing background might do disproportionately well at the beginning of 0170, thus overestimating their strength. We chose a month to strike a balance.
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, 0040, or 0931, should I take 0190?
A: 0190 may indeed make a lot of sense. Take 0170 and be sure to do the 0190 supplemental homeworks!
Q: Why don’t you have an entry point from 0150?
A: 0150 is an excellent course. However, the current design of 0190 relies on what 0170 teaches. The first few weeks of 0150 are too different from those of 0170. If 0190 had to accept students from both classes, it could not assume enough common background, and would hence have to be a weaker course.
It is quite possible that a different professor teaching 0190 would create a course that is closely aligned with 0150 instead. Their AFQ would instead tell you that 0170 is an excellent course, but not an appropriate entry point.
Q: What’s different this year?
A: You may have heard or read things about 0190 from past years, so you need to know that not everything is the same.
Most of all, we have added required labs to 0190.
Correspondingly, we have reduced the number of homeworks, to make time for labs.
Relatedly, we have removed a few topics from the class to make it possible to spend more time digesting the material from the other ones. Some of these topics have moved to labs.
We’ve changed the programming language. Instead of using Racket, you will start using Pyret (the language used in cs019 proper) starting with the supplements.
We’ve changed how many supplements there are.
We’ve changed the timing of some of the supplements.
If this sounds like a lot to keep track of, here’s something important: you don’t need to keep track of any of it. 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 the professor.