This is just a quick lit review where we can collect ideas and tag online resources.
There are a lot if Microsoft resources in the MSDN, for example if one starts at http://msdn.microsoft.com/en-us/library/aa287557(v=vs.71) there are tutorials, sample programs, Language Specs, a Programmer’s Reference, etc.
Interesting ideas From Lynn Andrea Stein, but project seems to have died. Had notes that were to become a Java textbook, didn’t happen. But some ideas about her world of interactions are nice. http://www.cs101.org
Perhaps the most fundamental idea in modern computer science is that of interactive processes. Computation is embedded in a (physical or virtual) world; its role is to interact with that world to produce desired behavior. While von Neumann serial programming is based on the idea that “computation as calculation” uses inputs at the beginning to produce outputs at the end. “Computation as interaction” treats inputs as things that are monitored and outputs as actions that are taken over the lifetime of an ongoing process. By beginning with a decomposition in terms of interacting computational processes, we can teach our students a model of the world much closer to the one that underlies the thinking of most computer professionals.
I emailed Lynn and asked why the project had gone cold, and whether, with hindsight, she’d still advocate this approach:
Hi Peter
Actually, nothing should be inferred from the project going cold; in fact, I think it’s more important now than it was when I started the work. The (former) Williams College folks had some success with a similar curriculum – less concurrency, more event-driven – and a number of people adopted the cs101 work successfully as well. Debora Weber-Wulff (http://people.f4.htw-berlin.de/~weberwu/) would be the poster child you’re seeking :-)
In my case, the story is that I changed institutions in 2000, moving from MIT – where the course was growing in enrollment and a nice complement to other things that were offered – to Olin College, which was at the time so brand new that we didn’t even have students. I taught the cs101 curriculum here a few times, and then we hired another computer scientist who was passionate about Python and developed a somewhat different approach that he was inclined to teach. He and I agreed that a number of the major principles were similar in the curriculum – emphasis on interface, object autonomy, gluing together libraries and working with existing infrastructure – and we both have a healthy respect for abstraction as well as for design process/debugging etc. The short story is that he’s been teaching the course more than I have, and so it has moved to his curriculum as the path of least resistance. (I also got pretty heavily involved in the project of figuring out what an engineering school ought to be about, why anyone should attend a face to face college, etc., and more recently in our whole transform-engineering-education agenda (http://i2e2.olin.edu), so I’ve been doing less CS recently anyway.)
Bottom line: I still believe everything I said. In the era of the web and multicore and embedded devices, it is if anything more true. I just haven’t gone back and updated the Java in the materials I developed, and life has distracted me for long enough that the project is now substantial. I would love to have an excuse (and the time) to revisit it!
Lynn
This course is an introduction to computer programming. It will be taught in English and with the Java programming language, and will be taught using the language (i.e., no prior programming experience is assumed), but it is not about the language.
The theme of this course is interactive programming. Most computation these days is not algorithmic question-answering in desktop boxes (as typically taught in introductory computer science). Instead, this course will focus on a model of computation as a set of simultaneous ongoing entities embedded in and interacting with a dynamic environment: computation as interaction; computation as it occurs in spreadsheets and video games, web applications and robots. Some of these ideas were developed by Prof. Dr. Lynn Andrea Stein while she was at MIT, I use some of her material and examples. A short discussion of the methodology can be found in this article in c’t (in German). We will be using an environment called “BlueJ” in the lectures and exercises to demonstrate this way of programming.
They use BlueJ. It is worth reading a bit about BlueJ too, and the fact that the author seems very angry that the Object Test Bench idea from BlueJ found its way into Visual Studio without acknowledging his prior work.
Tutorial 1: Create a Picture Viewer
Build a program that loads a picture from a file and displays it in a window. Learn how to drag controls like buttons and picture boxes on your form, set their properties, and use containers to smoothly resize the form. Get started writing code.
Tutorial 2: Create a Maze
Build a maze game, where the user moves the mouse pointer from start to finish without touching any walls. Learn how to lay out a form using a Panel container, build a maze using Label controls, write code to show a message box, set up event handlers for mouse events, make your program play sounds, and use classes to organize your code.
Tutorial 3: Create a Math Quiz
Build a timed math quiz game, where the player must answer four random arithmetic problems within a specified time. Learn how to generate random numbers using the Random class, trigger events using a Timer control, control program flow using if else statements, and perform basic arithmetic operations.
Tutorial 4: Create a Matching Game
Build a matching game, where the player must match pairs of hidden icons. Learn how to hold objects using a List object, use a foreach loop, keep track of a form’s state using reference variables, build an event handler that you can use with multiple objects, and make a timer fire exactly once when started.
10 simple steps, creates an app with a textbox, button, and some event handing. EPW score 4/10
A wikibook, built using wikimedia. Creative Commons Licence is of interest: source is available for changing, PDF for downloading and printing. About 75 pages.
One possible approach to our own 2013 would be to say “grab this as our fall-back saftey net: we can teach something akin to our current course, (command-line first, etc.) then over time make the adaptations we’d want.”
Content Score 4/10. Not about Computer Science, just about C#.
Free, good book used in CSc101 at University of Hull. PDF at http://www.csharpcourse.com/. Rob Miles, the author, seems to have sidestepped the GUI-first here, and current appears to be working on writing books for developers for Windows Phone.
Series of 5 walkthrough videos (about 40 minutes in total) to create a Picture Viewer app in C#.
A series of short videos (typically 8 minute clips).
There are about 27 clips on using Forms controls (“e.g. how to use the PictureBox Control”, “How to use the Timer control.”)
Also 7 short videos giving some tips on how to use aspects of Visual Studio.
Some tips about using VS and managing windows, etc.