Links to resources that will be helpful will appear here during the course of the semester. During this course students are expected to use many software tools. Below is a list of those tools in the order that they will be introduced in the course.

Software Tools Used in CS 453 in Order of Introduction

  1. Class web page at You are already here. The syllabus states that students are responsible for checking the webpage each day. Announcements will be on the main page.

  2. ssh will be used to log onto the CS linux machines remotely. The list of available machines is at the Department Facilities page, the Workstations link. If you do not have a CS department account, then you need to contact systems at or by going to the south side of the fourth floor in the Computer Science building.

  3. Haskell. We will be learning Haskell this semester and writing the MeggyJava compiler in Haskell. Haskell is a purely functional, lazy, and strongly typed language with syntax that is quite different than what you are probably used to. Because it is a different programming paradigm, you will learn different ways to solve problems and you will learn about programming constructs that are just now starting to make their way into languages like C++ (think lambda functions). Here are some resources to help you learn Haskell.

  4. Canvas, Coming soon!

  5. The checkin utility will be used to submit all assignments. If it is a homework assignment HW1-HW4, you can scan in a handwritten version of the assignment. Submit a pdf for the homework assignments by typing the following on a CS linux machine (replace HW1 with PA1 or HW2, etc. as appropriate):
        ~cs453/bin/checkin HW1 HW1.pdf
    For the programming assignments you will be submitting a tar ball whose contents will be specified in each assignment writeup.

  6. Makefiles will be used in many of the recitations and most of the programming assignments. We will be providing the Makefiles for you, but sometimes you will have to make edits to the Makefile. Read about the basics at a Makefile tutorial.

  7. Subversion. Some form of revision control is required in CS 453. If you can produce a commit log, then it works. We will be teaching subversion in recitation.

  8. We use the AVR-G++ tool chain to assemble and link your generated AVR code with the MeggyJrSimple library. The CS linux machines have this whole tool chain installed. By following the Meggy build instructions, you should be able to do any compilation you need on the command line. IF you want to download to your own device and you are not on campus, then you will have to install this software on your machine. We initially started from the Arduino software environment and pressed shift while the Arduino IDE was compiling and loading to reverse engineer the commands to use on the command line. Unfortunately this doesn't appear to work in the most 1.0.6 version of the Arduino environment. Check out the Makefile we provide in the Meggy build instructions to figure out how to use the AVR-G++ toolchain.

  9. MJSIM.jar is a simulator for the subset of AVR assembly code we are using in our projects. mjsim was written specifically for this class, and we can update some issues as you find them. We use mjsim to do command-line simulation of the AVR programs your compiler generates for grading. mjsim also has a GUI mode that has a MeggyJr emulator. mjsim is written in Java and provided as a .jar file.


The Meggy Jr Device