Programming with
Data Structures and Algorithms


Welcome to the Fall 2012 CSCI 0190 (formerly known as cs019)!

The class meets MWF 11-12 in the CIT (map, directions), which is on the corner of Brook and Waterman, next to the Sciences Library. Note that because Thanksgiving break officially begins only at noon, we will have a regular class on Wed, Nov 21. As you plan your trips, please keep this in mind.

All your work is governed by our policies, so it's best for you to know them thoroughly.

This year CSCI 0190 will be following a new format. 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: What's different this year?

A: All students who want to take 0190 must initially enroll in and attend 0170, and complete its regular homeworks. There will be additional homeworks given for students who wish to determine whether they should take 0190 instead. Only those who do well on the regular 0170 homeworks, and are successful at the supplemental homeworks, will be permitted to enroll in 0190.

0190 will separate from 0170 roughly one month after the semester begins. When the classes separate, 0190 will move to a different room (CIT 506). Until then, you will be a regular 0170 student.

Q: How do I enroll in 0190? And if I end up completing 0190, what course will my final transcript indicate?

You will not be able to enroll for 0190 initially. We will inform you about the enrollment process at the appropriate time.

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.

Is there any other way of getting into cs019?


Was this always the only route in?

No. Previously, 0190 began at the beginning of the semester, and was limited to students who had scored a 5 in the AP CS AB exam. We got rid of it for two reasons:

  1. The AP Board got rid of the (tougher) AB exam. The remaining (A) exam is not advanced enough to give students a clear indication of whether or not they belong in 0190.
  2. Some students who would have benefited from 0190 never even attempted it because they didn't have the right prerequisite.

How are things better now?

The new system lets all students, even those who have no prior computing education, attempt 0190.

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.

What should I do after 0190?

If you have some Java background, and can acquire some more over winter break, you will be ready to move on to courses like 0320. We will devote some time to this near the end of the semester.

If you can't acquire this background by the time the spring semester begins, you can safely take 0180, which is the usual follow-up course for 0170 students. There will probably 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.

If I've taken 0150 or 0170 before, should I take 0190?

No. You should instead proceed to the next course in that sequence, namely 0160 or 0180. You will learn more from them.

If I've taken 0160 or 0180 before, should I take 0190?

No. You should instead proceed with the rest of the curriculum.

If I've already taken 0020, 0040, or 0931, should I take 0190?

0190 may indeed make a lot of sense. Take 0170 and be sure to do the 0190 supplemental homeworks!

Why don't you have an entry point from 0150?

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 explain why 0170 is not a reasonable entry point. In short, there's nothing wrong with 0150, which is a great course.

Isn't this all a bit experimental?

Not just a bit.

You're at a research university, being taught by professors who are also active at research, which means we are constantly trying to innovate. Some innovations succeed or fail right away, but most need several iterations before we can pass judgment. So you are really being asked to participate in an experiment.

The old 0190 was itself such an experiment. It had gone through a few iterations and was finally settling into a stable state, but its major assumption—about incoming students—was invalidated by the change to the AP CS exams. Therefore, we've had to start all over.

If you find participating in such an experiment exciting, we welcome you and thank you. When it's done, you can tell us what worked and what didn't, and help us improve it.

If you feel you don't want to be part of an experiment, no problem. You can take one of 0150 or 0170, two outstanding and stable courses. (Of course, even these courses are constantly making changes to improve things, but the changes there will be much smaller and their outcomes will be much more predictable.)

I have a question not answered above! Where do I send it?

Address it to the professor.