This is the archived website of SI 413 from the Fall 2013 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.

Created by researchers at Xerox PARC in the 1970s. This is considered a pure object-oriented programming language, and one of the first to embrace that paradigm. Much of the theory of OOP was developed in Smalltalk. Also notable for its strong historical connection to GUI-based development. In fact, the Smalltalk interpreter we will be using is itself a windowed GUI, and you write GUI applications from within it.

Useful Links

How I will run your code

Smalltalk is kind of special because the development environment for Smalltalk is the same as the execution environment. That is, you write your program in Squeak, and you also run your program in Squeak. In fact, your program is just a modification of Squeak itself! So you're going to have to be careful about what you're doing, to make sure that I can run your code too! The insructions here are for the CS Linux environment. You are free to run Squeak and do your programming on any other computer you like, but in that case you're more on your own and I don't make any promises about cross-compatibility.

To run Squeak, just use the command 413squeak in the CS Linux environment. The first time you do this, it will actually create a folder called "squeak" in your home directory, that contains the entire Squeak 4.3 virtual machine and image. Next, or if that directory already exists, it actually runs squeak from there.

When you start Squeak for the first time, you should actually see the 99 bottles of beer program and some instructions from me in the bottom-left hand corner. This is the starting point for Phase 1 of your project. You are free to edit anything you like, and when you tell Squeak to "save" or "save and quit", it will actually save your entire editing environment for the next time you run it.

But that won't get me your code! To do that, you need to "file out" the classes you've created. All of these should be in the category "SI413-Project" that I've already started for you with the "Beer" class. If you right-click on this category in the Browser, the go to "file out", it will create a file called "" in your "squeak" directory. This is the only file that you will submit for each part of your project.

When I go to run your code, I will open a "fresh" image of Squeak, then "file in" this file by going to a file browser and selecting it. So make sure all the code I need is in classes in the SI413-Project category!

I know this is a little bit difficult to get set up, but I've tried to make it as easy on you as possible. Please don't hesitate to ask me for help in getting started, or as you go along.

Phase 1 Requirements

For this language, you need to implement modifications A, B, C, E, F, and G. See the Phase 1 page for details on what this means.

I will run your program by doing a "file in" of the "" file that you submitted, and then running Phase1 new start from the workspace. This means that you need to create a class called "Phase1" and a message called "start" within that class...

Phase 2

See the Phase 2 Page for the list of suggested problems. Of the ones listed, I recommend the following as being most well-suited for Smalltalk:

  1. Matrix Calculator
  2. Image Creator
  3. Hangman
  4. TODO list
  5. Vending Machine (only if you make it fairly sophisticated, with buttons etc.)
  6. ??? (you choose!)