Brain Freeze: Rethinking curriculum for beginning programmers

Chapman University has handed me a challenge: Create a first programming class for students who are going to be part of a new minor in Game Design.  Ok, not bad, oh wait, it also needs to get the students to a point where they can write programs in C# in a game design class.  The audience is made up of “design” students as well as CS students, both are bright and motivated, but quite a bit different.

Usually as an adjunct in the 1980s or 1990s, I would usually get a call from a school stating that they needed a professor to do a class in programming or engineering, they would have a textbook selected and usually a syllabus that I would simply use in class.  Quite often the school would have foils (that’s what powerpoint slides were called, because they were acetate foils that you would place on a light table thingie).

This changed in the 21st century, my past three gigs of being an adjunct has been to create a new kind of class that stimulates excitement about software and the creation of media like games, etc.

  • Ok, I am going to assume for the moment that I don’t have to consider rubrics, ACM accreditation, only focus on the students and the needs of their potential employers.

Using Game Design in a beginning level class is a challenge, but the paradigm of games can be exciting and a focus for the student.  Of course, to do a fresh approach, the students would need to get experience with programming (coding), database, security, dealing with media, testing and deployment.  Also, to make sure that the small private college gets their 15 minutes of internet fame, the students will need to blog about their experiences and to demonstrate their work with little or no friction.  Philosophically, the class would never use a piece of paper, although, I would likely assign a book as some students like to have a book.  Ok, except for the design students, they can use paper to sketch out their ideas, but I wouldn’t need to see those, unless they want to show them to me, but they would have to scan them in for me to observe.

So what should the student have to produce to succeed at the end of class?  How to get the student to do teamwork?

Usually the students might produce the following:

  • 10 problem sets
  • 2 exams
  • 1 final project

The traditional, well as much a tradition might be for a young science like Computer Science (let’s face it, Civil Engineering is an example of a STEM curriculum with tradition):

  • Introduction to C#
  • Designing Applications.
  • Variables and types
  • Control structures
  • Object Oriented Programming
  • Exception Handling
  • Designing classes
  • Strings and arrays
  • Structures and Sequential file access
  • Multithreading
  • Database and ado.net
  • Interface Design
  • Graphics and Animation
  • Introduction to C in the Unix environment
  • Low level programming in C

And then there is usually a textbook, no comments on any of the textbooks, except that most students have no desire to have a book, at least till they take a class that doesn’t use a book.  Although the C# books by Dietel are pretty good.

First change would be to the last two items: Intro to C in the Unix environment and Low Level programming in C.  Boring.  I would change those to:

  • Playing games on the Unix Environment using CROBOTS and the C language, C language is only used to program the robots, the source code remains hidden from the students.  Make sure ask the students to pay for the use of the shareware.  That could be fun. 
    • Outcome: Students compete to get the best score in CROBOTS, which works on the Windows and Unix systems
    • Required: Students to do an eyeball threat analysis of the source code
    • Required: Students to do an eyeball for efficiency
    • Rubric:
      • Student that gets top score using their own code gets an A on the assignment
      • All students have to do 3 variations on the attack code.
    • Optional, software types: create a more fun game that allows non-programming users to create and play CROBOTS
    • Optional, design media: Using the limited tools, create more interesting images and play
  • Create a game that will run on a handheld device using C!
    • Outcome: Students create a simple game that runs in C that can be run on a smartphone
    • If using C#:
      • Using the VSTS environment, or the C# Express the students would write a program for the Zune.  This will force the students to use the XNA Game Studio.

Wow, that sounds unchallenging.  But what would the problem sets look like (remember I am not looking at the department rubric or anything, just doing what I think is cool):

  1. Write and test your first program for security issues (Intro to C#)
    • Goal: Introduce the students to the use of the IDE
      • Students will be required to install on their personal systems:
        • VSTS 2010
        • Expression 3 Studio
        • C# Express (and register their version)
        • XNA Game Studio
        • Download the “Program Now!” book on C#
    • Outcome:
      • Student will be able to demonstrate how to use an integrated development environment and how to use it to build a simple program.
      • Student will be able to discuss how test and security impact the development and architecture of web sites, databases and program development in general
    • Security: Discussion of the impact of security on society
    • Test: Discussion of the different types of test capabilities
  2. Use media in your programs (Designing Applications) 
    • Goal: Students will design and create a random number generator with images of 6-sided, 10-sided and 12-sided dice that stores the results of the roll of the dice in a file
    • Outcome:
      • Student will be able to demonstrate:
        • How to design a simple user interface.
        • How to write simple code that generates random numbers and accepts input from the user
        • How to utilize images and sou
    • Security: Random number generation is part of the System.Security.Authentication, examine the differences
    • Test: Introduce NUnit test and to implement a series of tests that force the dice to roll.  Students will then use a tool of their choice to determine the randomness of the dice throws
  3. TBD
  4. TBD
  5. TBD
  6. TBD
  7. TBD
  8. TBD
  9. TBD
  10. TBD
  11. TBD
  12. TBD
  13. TBD
  14. TBD
  15. TBD
  16. Final

Well got some more to think about.