Course: COMS 4115 Programming Languages and Translators (Fall 2020)
Website: https://www.rayb.info/fall2020
University: Columbia University
Instructor: Prof. Baishakhi Ray
- Announcement Date: Wednesday, September 9, 2020
- Due Date: Sunday, September 13, 2020 by 11:59 PM. No extensions!
- Total Points: 5
This assignment will require setting up your environment in preparation for future programming assignments.
We have allocated Google Cloud (GCloud) credits for each student. Please email your UNI to the instructors/TAs, and you will be sent a $200 GCloud coupon by email.
- Follow these initial instructions to redeem your course coupon.
- Create a project for this class, and give it a name (e.g., "coms4115"). This will likely have to be created within the columbia organization.
- Navigate to Compute Engine (while in the context of the new project), and create a virtual machine to match the specification shown below (you may select your own name). The most notable changes are:
- Leave the region/zone to
us-central1andus-central1-a. - Machine type:
n1-standard-4 - Click "change'' under boot disk to select
Ubuntu 18.04 LTS, and add at least 120 GB of persistent hard disk (HDD). - Leave the defaults for the remaining options:
Compute Engine Default Service Account,Allow default access, andUnchecked boxes for Allow HTTP/HTTPS traffic.
- Leave the region/zone to
- Upon creation of the VM, SSH into the machine by clicking the SSH button next to the instance in Compute Engine, or add your SSH keys to log in using your own terminal. More information on access can be found here.
IMPORTANT: You must shut down your instance when not in use. There are not enough credits to keep the server running continuously. Ensure it is shut down when not in use so that you do not lose credits unintentionally. There should be enough credits for about 850 hours of compute time.
Note that the GCloud VMs will have the same Ubuntu base image, and you can install necessary libraries on top of LLVM Clang in the future. However, you may choose to use other open-source software to create your VMs. If you do so, please follow these steps:
- Create Ubuntu 18.04.3 Virtual Machine by using either VMware Workstation 15 Player or Oracle VM VirtualBox to install Ubuntu 18.04.3.
- At least 8 GB memory is required for the virtual machine, and 12 GB memory is recommended.
- At least 120 GB hard disk is required.
- Install the necessary packages (which can also be installed by running the
setup.shshell script we provide):sudo apt updatesudo apt upgradesudo apt install build-essential subversion cmake python3-devsudo apt install libncurses5-dev libxml2-dev libedit-dev swigsudo apt install doxygen graphviz xz-utils git
Version control with Git will be a large aspect of this course. You will be managing and submitting your programming assignments using Git. Since assignments are completed in the Linux environment, you will be able to access Git directly from the Linux shell.
Please follow these instructions for installing Git:
- Make sure you have Git installed. Instructions on installing Git for Linux can be found here.
- To improve your Git experience, you will need to set up SSH keys for the machine using Git, if you haven't done so. To set up SSH keys, please refer to this page. Note that you only need to complete the subsection titled Generating a new SSH key for Linux.
- Add your newly-generated SSH keys to the GitHub account, as done here.
If you do not already have a GitHub account, please create an account in GitHub. Remember to submit all future assignments using this GitHub username.
Throughout the semester, we will be using GitHub Classroom for programming assignment submissions. Please follow these steps to set up GitHub Classroom:
- Go to GitHub Classroom, signin and authorize your GitHub account for GitHub classroom. (Note: You have to do this step just once. This step is for authorizing your GitHub account for using Github classroom application.)
- For each assignment, you will receive a GitHub classroom invitation through Gradescope/Courseworks.
- Log in to GitHub with your UNI username, and accept the invitation. Once you accept the invitation, the repository will be created for you, and you will then have write access.
Please add your Columbia UNI and GitHub username in the uni.txt file we have created, and make sure to commit and push this file in your final submission.
If you have any questions about this programming assignment, please post them in the Piazza forum for the course, and an instructor will reply to them as soon as possible. Any updates to the assignment itself will be available in Piazza.
This assignment belongs to Columbia University. It may be freely used for educational purposes.
