This page has links to useful resources.
Information
This section has links to some information resources you might find useful.
Practice problems and exams
- Midterm, Spring 2020, Solution
- Exam 1 practice questions, Answers
- Assembly language mini-exercises
- Assembly language exercise, solution
- Assembly language exercise 2 (more challenging)
- Zipfile for in-class assembly language exercise
- Exam 2 practice questions, Answers
- Exam 3 practice questions, Answers
- Final, Spring 2020, Solution
- Final, Fall 2019, Solution
- Exam 4 practice questions, Answers
- Exam 4, Fall 2020, Solution
x86-64 assembly programming resources
Software
This section covers the software you’ll be using in working on programming assignments.
Linux
For the programming assignments, you will need to use a recent x86-64 (64 bit) version of Linux.
Important: the code you submit is required to run correctly on Ubuntu 18.04, since that is the version of Linux that Gradescope uses.
Here are some options for getting your development environment set up.
You can install Ubuntu 18.04 directly on your computer. This is a good option if you are comfortable installing operating systems from installation media.
On Windows 10, you can use the Windows Subsystem for Linux (WSL). Once WSL is enabled, you can install Ubuntu 18.04 from the Microsoft Store. Make sure that you install the tools listed below. Using WSL is an excellent option if you are comfortable doing your development work inside a terminal session.
On MacOS and Windows, you can use virtual machine software such as VirtualBox to run Ubuntu 18.04 as a guest OS. If you do a web search for “ubuntu 18.04 image for virtualbox” you will find pre-made OS images that you can download. (I can’t directly vouch for any of these, so be careful.) You will likely need to enable hardware virtualization support in your computer’s BIOS to allow VirtualBox to run correctly. We recommend dedicating a significant amount of RAM (at least 4GB) to the virtual machine (this should be fine as long as your computer has at least 8 GB of RAM.)
It is possible to use the CS ugrad machines to do your development work. Note, however, that this environment is not based on Ubuntu 18.04, and your programs may be behave differently. A correctly-written program that is free from memory errors (such as using uses of uninitialized values) should, in general, behave identically on the ugrad machines and Gradescope, but ultimately it is your responsibility to ensure that your programs work under Ubuntu 18.04.
Tools
Some of the tools you’ll want to have are:
- gcc
- g++
- make
- ruby
- valgrind
- git
All of these are available by default on the Ugrad computers.
To install on an Ubuntu-based system:
sudo apt-get install gcc g++ make ruby valgrind git
You’ll also want to install a text editor. Emacs and Vim are good options:
sudo apt-get install emacs vim