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
-
Matthew FLATT, ph.d student, language group
-
Tong HAN, MCS '97 graduate
-
Li XU, ph.d student, compiler group
-
Qing YI, ph.d student, compiler group