Advice Page for Taking Courses Offered by the CS Department

Introduction to this page

I am going to make this page an organized presentation of advices, experiences as well as links to other information for people who is interested in taking courses offered by the Computer Science department at Rice.

Please note that you should not make your decision soly based on the information provided in this page.  The way to get the best (and authoritive) information is to talk directly with the instructor of the course you are interested.  Remember, the sole purpose of the instructors and labbies are to help you to learn what you want to know, and so are us who contributed to this page.

All the comments here are based on previous experience and are not guaranteed to be accurate or up-to-date.  This brings me to the standard disclaimer that no contributing author of this page shall be held liable for his/her comments.

  I sincerely call for participation.  Please share you ideas and suggestions.  Write to me at cding@rice.edu.
 

Table of contents

 

Questions and answers based on the purpose of studying

1. What course(s) you would recommend if a student just want to learn some basics in computer science; and the order you think good for the beginners/novices?

Answers:
Of the courses I know of (comp210, 212, 280, 311, 314, 360, 409, 412, 421,  481, 425, 481, 512, 515, 520, 525, 529, 581), I would recommend the 212 and 314 for people who want to learn just programming, 412 and 421 for people who learn system software and advanced programming, and 210 and 311 for fundamental concepts of programming language.  There is no explicit data structure course, the material is in 212 and mostly in 314.  All the above courses mentioned have significant programming components; normal student should not take more than 2 at the same time.

--Chen DING

I don't think CS has a good course offer to those interested in sharpen their programming skills. On one hand, the courses are too theoretic, like algorithm, language, and the other side,  like OS, database, network, focus on the foundations not the applications, thus still far from industry-job oriented.
 
However, maybe people should consider programming involved courses like 212, 421, 430, 529. Though the faculty teaching that is likely to stress the research perspective.

 --Li XU

2. For those MCS students, what course(s) you think might be very helpful when they go to job hunting later on; and again, the order you think good for them to take the course(s) in CS department?

Answers:
Almost all the courses are helpful for MCS students.  In terms of job hunting,   Database Management is the most valuable course for me.

--Tong HAN, MCS '97

Questions on specific courses

Comp100

Computer Literacy. How to use a computer and computer jargon. For students interested in computers, but not computer science. Comp200 is a better course.
--Matthew FLATT

Comp200

Computer Science for Poets. Teaches what computer science is really about (as opposed to how to use a computer) without having to write a lot of programs (although there is some programming).
--Matthew FLATT

Comp210

The standard introductory course at Rice. Comp210 quickly gets you into real programming ideas. No prior computing experience is necessary. (A lack of programming experience may actually be beneficial if it keeps your mind open.)
 
The course can be challenging, but also especially rewarding for those interested in computer science. There is a lot of homework and a lot of programming assignments.  Students who are interested less in programming and more in the general scope of computer science should consider Comp200.
 
 Comp210 is probably more popular with students outside the computer science department than those within, perhaps because the skills it teaches do not appear directly marketable. For example, Comp210 doesn't teach the syntax and details of the most popular industry programming languages. The goal of Comp210 is to provide a solid understanding of programming that can be ported to any programming language. For students with programming experience, Comp210's choice of language seems strange (it's a tiny subset of Scheme, a langauge with a lot of parentheses), but Scheme's simple syntax makes it ideal for beginners.
--Matthew FLATT

Comp211

Practical programming. Builds on the skills of Comp210, but in a different programming language, so syntax and machine-oriented details become more relevant.
--Matthew FLATT

Comp311

Programming languages. Builds on Comp210 with a more in-depth theory of programming.
--Matthew FLATT

Acknowledgement

Ming ZHANG is the one who initiated this idea and urged me to give a try.  Currently I am editting and presenting the collection of comments Ming has solicited.  He also formulated the both questions in the first section of this page.

Contributing authors other than myself