Homework 0: Welcome To CS 174 / Software Test (15 Points)
Chris Tralie
Learning Objectives
- Practice basic terminal commands and folder navigation
- Practice compiling and running programs in the terminal
Description / Overview
We're doing some serious systems programming in the class, and I also want to have fun assignments that deal with multimedia data (images, music, videos, animations). Because of this, the process to setup a software environment for this class is more involved than usual. To make sure everyone is setup properly, I have devised a series of tests to verify that everything we need is working. If you get stuck or something unexpected happens at any point while following the instructions below, you should immediately post on Discord. We'll work through it there together (I'm giving students Mac and Windows labels on our channel to help us coordinate that)
First, follow the software installation instructions for Windows or Mac OS, depending on your computer. They may take a while, but you will be rewarded 😅 (with points on this assignment and with the inherent satisfaction of having a slick software setup). Once you're finished and everything is in place, create a designated directory for everything CS 174 related, open your terminal, and use the cd
command to change into this designated directory (alternatively, you can create the directory in the terminal using mkdir
command). Then, to obtain the test software I've created, type
This should create a folder called HW0_Warmup
in your current directory. Change into this folder and type ls
You should see these folders/files
If that all worked, proceed to the following tests. Take note of what you see, and submit the results to this link on Canvas
Audio Test (3 Points)
Change into the sound
directory
then type
Now run the generated program
If everything is working properly, this should generate a file called mysterysound.wav
. Open this file, and take note on canvas of what number is spoken
Canvas/ffmpeg Test (3 Points)
Now go back up a directory and into the directory canvas
then compile the program there by typing
Now run the generated program
If everything is working properly, this should generate an animated gif file called MysteryShape.gif
. Open this file, and take note on canvas of what shape is drawn
CMake / OpenGL / Live Animation Test (3 Points)
Now go back up a directory and into the directory tinygl-cpp
(this library is courtesy of Aline Normoyle right down the street at Bryn Mawr College). The compilation process for the program here is slightly more involved because we'll be using something called cmake. Once you're in the directory tinygl-cpp
, create a new directory called build
, change into it, and use the cmake
command to generate a makefile for your system (we'll talk more about makefiles in class)
Now you can build the program by typing the command make
Now run the generated program mysteryletter
If everything is working properly, this should pop up with a window with a letter bouncing up and down. Take note of this letter, and write on Canvas what it is.
NOTE: Windows users should be sure that they are vcXsrv in the background before executing mysteryletter
GCC / x64 Assembly Test (3 Points)
Now go back up to the root of HW0_Warmup
and into the directory assembly
. If you are under windows, type
Or, if your on a mac, execute the following (since assembly on mac uses slightly different syntax)
Then, execute the program
Take note of the number that is output to the console, and indicate it on canvas
NOTE: If you get an error Symbol `printf' causes overflow in R_X86_64_PC32 relocation
, then compile by typing
as per this StackOverflow post
Valgrind Test (3 Points)
One last test to go! We're going to test something called a memory leak, which is when we don't take care to cleanup dynamic memory that we request during the run of our program. This takes place automatically in Java using something called a garbage collector, but we have to handle it manually in C and C++. It's very common to forget to clean things up, but this can cause us to run out of memory, as well as other strange errors. Thankfully, there are tools to check for memory leaks, and we'll be using one such powerful tool called valgrind in this course (or, alternatively, clang's memory leak sanitizer).
Change back to the root of HW0_Warmup
. Then, if valgrind installed properly for you (which it should have on Windows or Mac OS Catalina), do the following:
Valgrind Directions
Now type
If you had to do the alternative installation, then use the following directions
Clang++ Memory Sanitizer
Now type
In both cases, take note of how many bytes of memory were "lost" or "leaked," and indicate this number on canvas. Also, indicate whether you used valgrind or clang++'s memory sanitizer.