Assignment 01: Hello CS223!
Due Friday, September 6, before midnight
The goals for this assignment are:
-
Try slack
-
Sign-up for Github
-
Look at the website
-
Write a simple C program
-
(Optional) Setup your development environment on your own machine
1. Try slack
I will be inviting you all to join the course slack channel. In the introduction channel, say and introduce yourself:
-
What is your preferred name and pronouns?
-
Share with us your favorite emojji. :)
We will use Slack for
-
Course announcements
-
Links to zoom and calend.ly
-
Questions and errata for assignments and labs
You can also use Slack to talk directly to me and the TAs, or even to each other!
2. Sign-up for Github
Please go to github.com and register. We will use github for assignments. Email the instructor (anormoyle at brynmawr.edu) with your github username.
*You will need to setup an SSH key for Github. Click here for instructions.
We have made the decision to open-source our assignments and projects for this class. The benefit of this decision is that you will have a portfolio of work that you can easily keep and share.
Having open-source assignments means that your work is publicly viewable, should someone search for it. It also means that if you copy other people’s work, it is in plain view for anyone to see! We will compare assignments and expect everyone to adhere to the honor code at Bryn Mawr and Haverford.
You will discover that there are many open-source coding resources for online. Some of it is boiler plate and intended to be re-used, such as when we use API documentation in order to use a function. Any non-trivial code (longer than a single statement) that you re-use in your own program should be attributed. In this class, 99% of all code should be your own.
3. Read the class web pages
Start by reading through all of the class webpage! Bookmark this page on your browser, or use some other method that helps you keep this information handy. All course materials will be posted on the course webpage!
Pay special attention to the Schedule.
4. Hello C
Verify that you can use Github, git, and C. You can try this using a lab machine, or your own machine if you have setup your development environment there.
Fork the repository
Fork the repository from here:
Fork is a button located on the top, right on Github.
Clone the repository
From your own account, clone the repository you just forked. The URL should look something like the following
git@github.com:<YOURUSERNAME>/cs223-assignments[]
Use the "Code" button on Github to copy the URL. Then run the following command from terminal.
git clone git@github.com:<YOURUSERNAME>/cs223-assignments[]
This will download a local account of the repository to your computer.
Build hello.c
In the directory A01
, you will have a sample file, hello.c
and makefile Makefile
. Try building and running.
$ make hello
$ ./hello
Hello World
Math Game
In the directory, A01
, implement a simple math game that asks a user a series of addition problems
and keeps track of the number of correct responses.
$ make mathgame
gcc -g mathgame.c -o mathgame
$ ./mathgame
Welcome to Math Game!
How many rounds do you want to play? 3
2 + 8 = ? 10
Correct!
1 + 8 = ? 5
Incorrect :(
6 + 8 = ? 14
Correct!
You answered 2/3 correctly.
Requirements:
-
Ask the user for the number of questions
-
Use printf and scanf for interactions with the user
-
Use a loop to ask each question
-
Maintain the number of correct questions
-
Generate random questions. Use rand() to generate random integers between 1 and 9.
-
Print a welcome message
-
Print a completion message
-
Compiles with
make
-
No memory errors using
valgrind
To check for valgrind errors, run your program like so. Look for the message "no leaks are possible". Make sure there are no errors reported. We will talk more about valgrind in week 2 and 3. |
$ valgrind ./mathgame
==5184== Memcheck, a memory error detector
==5184== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==5184== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==5184== Command: ./mathgame
==5184==
Welcome to Math Game!
How many rounds do you want to play? 3
2 + 8 = ? 10
Correct!
1 + 8 = ? 5
Incorrect :(
6 + 8 = ? 14
Correct!
You answered 2/3 correctly.
==5184==
==5184== HEAP SUMMARY:
==5184== in use at exit: 0 bytes in 0 blocks
==5184== total heap usage: 2 allocs, 2 frees, 2,048 bytes allocated
==5184==
==5184== All heap blocks were freed -- no leaks are possible
==5184==
==5184== For lists of detected and suppressed errors, rerun with: -s
==5184== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Submit your work to Github
Add and check in your program using git and then push your changes to Github.
Run the following command inside your A01
directory.
$ cd A01
$ git add *.c
$ git commit -m "Descriptive message"
$ git push
Run git status
to check the result of the previous git command.
Check the Github website to make sure that your program uploaded correctly.
5. (Optional) Set up a remote development environment with our server goldengate
A remote development environment will allow you to run code from goldengate, a remote server, from within an integrated development environment.
For this option, your need to use VS Code with the Remote-SSH extension to VS Code.
6. (Optional) Set up your own local development environment
A local development environment allows you to write code on your own desktop or laptop. With a local development environment, you will be able to run your code even after you graduate from college.
All programs must run on the lab’s Linux environment. Make sure you test your work on the lab machines if you work on your laptop! |
6.1. Windows
-
Open PowerShell and install wsl2:
wsl --install
. See documentation. Note that you may need to open powershell as an administrator. -
From the windows store, install
Ubuntu
.
Once installed, you can setup your development environment from a bash shell.
-
Open PowerShell
-
Type
wsl
to start the windows subsystem for linux. This will give your a bash prompt -
Then install your development tools
-
sudo apt-get install cmake
-
sudo apt-get install git
-
sudo apt-get install g++
-
sudo apt-get install vim
-
sudo apt-get install libc6-dev-i386
-
sudo apt-get install gcc-multilib
-
sudo apt-get install hexedit
-
sudo apt-get install valgrind
-
sudo apt-get install gdb
-
For example, you get something like the following
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Users\alinen> wsl
WSL alinen@Balthazar:~$ sudo apt-get install make
etc
A quick way to open powershell is to type <WindowsKey>-'Q' and type 'powershell'. |
6.2. MacOS
From terminal, run command xcode-select --install
You can follow the instructions here
Then, to install additional dependencies, execute the following commands form terminal
$ brew install vim
$ brew install git
$ brew install cmake
A quick way to open terminal is to use spotlight. From the keyboard, type the <cmd> and <spacebar>. Then type terminal at the popup edit field. |
Unfortunately, valgrind
and gdb
cannot be run natively on mac. However, you may try running leaks
or lldb
which are similar. However, we recommend you still test on goldengate or a lab machine.
7. Grading Rubric
Assignment rubrics
Grades are out of 4 points.
-
Github setup (0.5 points)
-
Slack setup and introduction (0.5 points)
-
C program (3 points)
Code rubrics
For full credit, your C programs must be feature-complete, robust (e.g. run without memory errors or crashing) and have good style.
-
Some credit lost for missing features or bugs, depending on severity of error
-
-12.5% for style errors. See the class coding style here.
-
-50% for memory errors
-
-100% for failure to checkin work to Github
-
-100% for failure to compile on linux using make