University of Toronto
csc148 -- Introduction to Computer Science, Fall 1997

Some advice about csc228

Many of you have been asking about what you can do over the holidays to get ready for 228. Since I will be teaching it next term, I can offer a little advice.


Programming in C

All programming will be done in "ANSI" C. (ANSI C is a "standard", a definition of the language that has become well accepted.) For students who don't know C, getting used to it is usually a major part of the effort in the course. In my opinion, the best thing that you can do to get a head start on 228 is to make yourself a little familiar with C.

Those of you who learned Java in 148 have a small leg up on C, because the control structures (while loops, ifs, break, etc.) are exactly the same in the two languages. However that's not what makes learning C a challenge.

The hard parts about C are really (1) getting used to some trickier pointer manipulations that C requires you to use; and (2) coping with the mysterious bugs that will crop up. Some of these bugs are of kinds you've never experienced in Java. For example, C will try not to stop you from going wherever you want to in memory (perhaps by setting a pointer to some number and following it, or by going past the end of an array). But this can lead to some pretty weird bugs. Worse, the feedback you get is just that something went wrong; not what or where.

So if you can get access to a C compiler and try running and debugging some extremely simple programs that would be great. But even just reading about C would be helpful.

C Books

I strongly recommend:

Another book you should know about: Whatever book you buy, be sure that it is written using ANSI C.

C Compilers

You can get a version of the gcc compiler for your PC either (a) on a roughly $30 cdrom available at the bookstore (the Walnut Creek GNU cdrom) or (b) by downloading it for free from the Web.

The gcc compiler doesn't have a fancy interface, but it works. If you want to buy a fancier compiler, many of my students have used Borland C and been happy with it.



Course content

The actual material in the course is interesting and very practical, but mastering it is not a big problem for most students. The text for the main course material is:



Assignments

To help students get over the learning curve for C, I use a sequence assignments that start out very easy and get harder. This works well, but expect to have many due dates in the early to middle part of the term.



Project and Group work

The course is also challenging because it requires you to write a project that is much larger and more difficult than the programs that you've written in 148. The project is done in groups of 2 or 3.
Students who manage the software design process effectively (i.e., they have a serious plan for designing, implementing, and testing their code), and who manage their team effectively (i.e., they have a serious plan for who will do what, when, etc.) have a huge advantage over everyone else.



I hope all of this helps. Good luck on your exams and have a great holiday!

Diane Horton