Slashdot Mirror


Memorable Programming Assignments?

Albert Schueller asks: "This fall I'll teach introductory programming for the third time. The class is generally populated by students from a wide range of backgrounds and interests-liberal arts and science types. While we use C++, the language isn't really the issue. Rather, the goal is to introduce basic programming ideas like loops, logic, modular programming etc. What are some of your favorite programming assignments that would be appropriate for students at this level?"

3 of 127 comments (clear)

  1. Ah, 15-127 by nadador · · Score: 4, Insightful

    (Oh, to be a freshman again. To take a "programming" class. To never have heard things like "this implementation is O of log n" or "NP complete" or "software cost estimation" or "preemptive fixed priority scheduling"...)

    The only assignment I remember from my first programming class was one in which we read in stuff from a file into a linked list, printed it forwards and then printed it backwards. The abstraction of the linked list was so cool, and when it actually worked I felt like king of the nerds (little did I know the horrors to come).

    When I was at CMU, there was one intro to programming class, and it was no fun for anyone. Now they've broken it up into people-who-might-take-another-CS-class, and people-who-don't-like-smelling-like-the-cluster, hence a class that is very light on fun and heavy on syntax and object oriented garbage, and one light on programming and heavy on pointy clicky fill in the blanks and make a game happiness.

    stepping onto my soapbox:

    While we're talking about intro classes, I think everyone who is going to take any additional classes in computer science, especially in the systems area, should take their first class in C, and it should be no fun. Every now and then you can toss them something fun, but learning the discipline of malloc/free, strncmp, etc., will serve you so well when you get to do object-y type computer science stuff. Writing good code, in a scientific or engineering sense, is just like learning to use UNIX - if you didn't suffer, you didn't learn. And if you get to new/delete or just new and then forget about it, you never learn the discipline that writing good code demands.

    -- steps off soapbox.

    --

    Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
  2. Re:The programming assignment I remember by pete-classic · · Score: 3, Insightful

    Most of the suggestions have been too hard and/or in the wrong language. This one is WAY too easy. AND it doesn't teach any 1st semester CS stuff. Well, okay, one loop.

    As for a general response, all the books that I used for CS (C++ 1,2,3 and intro is asm) Had both example projects and "problems" at the end of the chapter. Why don't you open the text you are teaching out of or *gasp* go down the hall to the library and check some books out.

    One I happen to remember is along the lines "Write a program that guesses a number between 1 and 1000 in as few guesses as possible. Detect lying by the player." This is a perfect first semester problem. It forces the use of screen and keyboard I/O, it forces the use of loops. By assignment you can demand that it is broken down into functions. It introduces the idea that you have to detect and deal with bullshit input.

    Finally, to all those to say "make it something fun" or "make it games" GROW UP. Go to a bullshit "tech institute" if you need the professor to spoon-feed you and forcibly retain your interest.

    -Peter

  3. Re:immediate, fun feedback by bluGill · · Score: 3, Insightful

    then the staff (you) could write a nice gui

    I like this bit of evilness: write your GUI beforehand, and then write a specifican, but make it wrong. Tell the students that the GUI won't be ready for a week, but they will be graded on how they interact with the GUI. Tell the class to write the program and test code to prove the interface works (error checking not required). On the day the assignment is due, collect the their program and the test code, and give them the GUI in library format (previously announced that way of course). Make sure the library doens't impliment the specification, but just tell the students "I will be testing with this GUI, not your test program, since you didn't have time to test with my implimentaiton I'll accept revised versions that work for one week, you will lose points, but not as many as if your program doesn't work. Of course you know that their program will not work with the GUI so they don't lose points, they just sweat a little.

    Evil, but fun to do, and it fits the real world very closely.