The University of Arizona
banner image

CSC 453: Compilers & Systems Software

Resources

Links to resources that will be helpful will appear here during the course of the semester.

MeggyJava

The Meggy Jr Device

Software Tools Used in CS 453

  1. Class web page at http://www.cs.arizona.edu/classes/cs453/fall16. You are already here. The syllabus states that students are responsible for checking the webpage each day. Announcements will be on the main page and will also be posted on piazza.

  2. 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.

  3. We use the AVR-G++ tool chain to assemble and link your generated AVR code with the MeggyJrSimple library. The CS Mac lab 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 set the preferences to verbose while the Arduino IDE was compiling and loading to reverse engineer the commands to use on the command line. Also, check out the Makefile we provide in the Meggy build github repository to figure out how to use the AVR-G++ toolchain.

  4. We will be using github classroom. The PA1 writeup describes how to set up a repository for your group. There are many ways to manage github usage. We initially recommend that you just create your own clone on your laptop and another one on lectura (everything will have to work on lectura). Then when you add a file use
        git add filename
        
    To commit a new or changed file to your local clone, type the following:
        git commit filename
        
    To push the changes to the repository you share with your group on github type
        git push
        
    To get the changes others have pushded to the shared repository type
        git pull
        
    Discuss with your group who will be working on which file at anyone time. IMHO, conflicts are not easy to resolve. Read up on the internet and/or come to lab or office hours to get help.

    Also, here are some additional github notes from Rick Mercer:

  5. 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.
  6. 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.

Other