Anticipated Frequent Questions

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 get, 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 follow the placement process, which takes place over the summer. If you placed into the class you were sent an invitation by email with further instructions.

Q: Is there any other way of getting into 0190?

No, sorry. We have tried different options in the past, and evolved this entrance structure based on our findings.

Q: I’ve been admitted to 0190. How do I register? Will you give me an override code?

You don’t need to do anything for now. We’ll give you instructions in class.

Q: Will my performance in the placement process affect my final grade in the course?

No, it won’t. Everything gets reset once the semester begins.

Q: I heard 0190 is limited in size. Is that true?

No! There is no size limit on 0190: anyone who does well will get in. Therefore, you are not competing with your classmates.

Q: Can I still try to get into in this course?

Sorry, no. The only way to get into the course is through the placement process, which has long since completed.

You might wish to argue that your background should exempt you. Unfortunately, we have found that prior computing experience is not predictive of success in 0190, which is why we created a placement process in the first place. In fact, many students with prior experience do not make it through the placement process.

Over the years we have refined the placement process and find it very useful in telling students whether or not to take 0190. Therefore, we use that only process for admission.

Finally: the course depends on material from the placement process. That way, we can hit the ground running from the very first day. Thus, if you haven’t done placement, you will be at a loss with the material.

Q: If I pass the placement process, 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 four different introductory offerings leading to the concentration—to say nothing of a half-dozen other introductory courses for non-concentrators—so we are deep believers in choice, just like the rest of Brown. We respect your freedom to choose and the choices you make without judgment.

Q: Why does the early part of the semester look so hectic?

This is on purpose. We want you to experience as many assignments as possible before the free add deadline so you can make an informed decision about 0190 without incurring a financial penalty. (The lecture schedule is also designed to give you a taste of several components.) The rapid-fire deadline pressure eases up after that initial period, though the difficulty of the assignments also increases, commensurate with the duration.

Q: How do I keep on top of things, and where can I ask questions while the assignments are in progress?

We will continue to use the EdStem board that we used in the summer.

Be sure to not post hints or solutions publicly! Be aware of the Academic Integrity policy.

Q: Are there any exams in this course?

No. I don’t believe exams are a useful way of measuring learning except inasmuch as they can be proctored to detect cheating (for which we have other mechanisms). In return, they are too dependent on test-taking ability, time preferences, not being ill on a particular day, personal constraints, etc. Therefore, this course has no exams, only Assignments.

Q: Why do you want anonymous submissions?

To the extent possible, we want to eliminate biases when grading. These may include biases both in favor or against people based on attributes such as race, gender, or even how they present themselves in person. To make clear we are serious, we will impose a small penalty if you do include personal identifying information (unless asked to).

I know this runs counter to what you have probably been told by countless prior instructors, and maybe even those in your other classes. If you’re turning in pieces of paper, it is important to label them clearly. Since your submissions here are electronic, that’s not a problem.

Q: Do we change languages once the semester begins? Why?

Yes we do: we’ll be switching to Pyret.

We use Racket for the placement because we want you to learn the content in How to Design Programs. Since that book is written using Racket, it would be really confusing if we made you read code in one language and write code in another.

We switch languages because there are things about Pyret we prefer for teaching 0190, which will become clear as we work through the semester. Indeed, even though it’s used in many other contexts now, Pyret is designed primarily for 0190.

We also think it’s really healthy for you to confront more than one language. If you go on to do any more computing at all, you’re sure to encounter—and quite likely be forced to use—many more, other languages. Developing some linguistic flexibility is really healthy for you.

Finally, Racket and Pyret are, while syntactically extremely different, semantically actually quite similar. So you can learn how your ideas transfer between languages and see that significant differences in syntax do not always imply major differences in behavior.

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. Many of the things we read are slightly or even completely wrong. Sometimes students make strong statements based on their personal experience, but not only is this limited to a very small sample, even then it’s sometimes incorrect! However, we can’t publicly contradict many of these statements because to do so would be to reveal private student information.

Therefore, don’t assume that our silence means we’ve seen and agreed with what is stated. We suggest you ignore these rumors, but if you do trust them you do so at your peril.

Q: What is the content of 0190?

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?

After you have completed 0190, you have numerous options.

We will devote an entire class session to talking about this, before you need to sign up for courses in the spring. This conversation will be much easier to have once you’ve seen much of the course’s content. Therefore, we suggest waiting until then.

Q: If I’ve taken 0111, 0150, or 0170 before, should I take 0190?

No. You should instead proceed to the next course in that sequence. You will learn more from them.

Q: If I’ve taken 0160 or 0180 before, should I take 0190?

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?

0190 may indeed make a lot of sense. You will still need to take the placement process. If you don’t place in, please take one of the other three introductory courses (0111, 0150, or 0170).

Q: Are there major differences this year?

There will be lots of small differences but no major ones.

As in recent years, 0190 will run the duration of the semester, instead of starting a month in.

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

Address it to me.