Reaction for: Colby College by Lucas
CS 115: Structured Programming and Elementary Algorithms
Java-based introduction to CS with only one major programming assignment and "exercises" to be done during the lab periods.
1:10 long lectures MWF with a 2.5 hour lab each Monday. Discussion groups of some sort were alluded to but never really explained (in general this web site is a bit sketchy as far as useful information goes) -- from what I gathered, at some point each week the class splits off into groups comparable to CS15's sections.
Lab work ("exercises"), small programming assignments, oral presentations, and practice exams (each effort graded pass/fail): 20%
Final project (written and demonstrated for the class): 20%
Once again, we see laboratory work being implemented (is Brown the only school without it?). Although there was no way to get reactions from past students, it seems obvious to me that this type of instructional format does well with students.
Also, there seems to be a heavy emphasis on the cognitive aspects of computer science, what computer science actually is, and how top names in the field think about it (the theoretical side of CS is being combined with the programming end of things)
Another very interesting facet of Colby's introductory CS program is the way in which the course forces students to re-use most of their code from the semester and compile it into a final project, counting for one-fifth of the final grade. The following is an excerpt from Colby's site:
My idea is not that you should research something brand new or begin a large program from scratch at the end
of the autumn. Rather, I would like you to identify among the ideas, themes, and techniques that we explore
together during the term something that you find especially interesting. Investigate it further. Learn a little bit
more. Assemble work already completed in our routine exercises, organize it coherently, and embelish it creatively. Then showcase what you have learned during the semester.
Of course, there is a flip side to the above coin. With all the focus on the literary and cognitive aspects of CS, students are not prepared nearly well enough coding ability-wise as they are here at Brown. I assume that these particular courses were chosen because they were the equivalent of our CS15. If that is the case, students at Colby have a lot of "catching up" to do.
Also, it seems as if some of the examples in class would not hold anyone's attention for more than 10 seconds. In the 6th week of class, about the half-way point, an entire lecture period is devoted to the practicing of "... writing methods that compute simple mathematical functions (volume, area, et cetera)".
Stuff to Steal:
Although not much can be gained from this website (it's much like the Brown Online Course Announcement), one thing did catch my eye. The implementation of exercises could be very useful.
A la CS16's miniprograms, an introductory CS course's students could greatly benefit by having a weekly exercise that would take (at the most) no more than an hour or two. Concepts by themselves are difficult enough to grasp; when coupled with the seemingly obscure syntax of a new language, things can become unmanageable.
I have put together a handout, CS15-style, of a possible final project choice for CS115 (idea courtesy mba):
Those pesky TA's are at it again! During lecture, they accidentally locked Andy's sweater collection in the TA room. Unfortunately, no one can remember the combination to the door -- that is, no one except El Zapato (aka: Tool-o Grande).
Your task is to beat Tool-o at his own game. You must, in a certain number of steps, figure out the 5 number and color code that keeps the sweaters just beyond our reach.
Here's how it works: you begin by picking an arbitrary set of color/number combinations. El Zapato will only tell you how many you have of the correct color, and how many of your digits are in the right place. You must then deduce from that information what the next logical move should be. If you figure out the code in a predetermined number of steps, all is well with the world. If not, well, have you ever seen Event Horizon? It would be nothing like that -- but it would be bad.
You will need to design and implement a Java-based version of the popular board game Mastermind. To do this, you should first start thinking about what parts of your code from this past semester you can re-use. Remember, be appropriately lazy! (NOTE: there need not be any AI (i.e. computer players) in your game) You may want to use some/all of the following:
The code you wrote in Tic-Tac-Toe will be especially useful, as it contains segments on mouse interaction that could be extremely valuable to you. Also, you're going to want to let the user undo their last move, so some sort of data structure will be required. Take a look at your code for CalzoneDex to get started. Finally, the GUI needs to be aesthetically pleasing -- XXXPlayer should give you some ideas as to what the right direction is.
- Geometry Management
- The Proxy Pattern
- GUI Widgets
- Stacks, Queues, and Linked Lists
For those of you that did weird things like hang out with friends as children, there will be copies of Mastermind available in the back of the lab so that you can play.
Ok, well, basically what I was trying to point out with the above exercise was that re-use of code is definitely a plus when it comes to an introductory level course. Seeing the building blocks of a "major" project come together is definitely beneficial to the learning process.
However, as you may have noticed, some of my examples are pretty lame. It's really tough to come up with something that's everything rolled into one; it's stuff like this that I experience while TAing CS4 and writing for this GISP that gives me a newfound appreciation of the work that goes into education.
Other People's Reactions