\ CS 137 - Programming Principles
uwlogo CS137 - Programming Principles


Assignments will be due at 9 pm on Thursdays. Assignments must be submitted using Marmoset.

Dan Wolczuk's Learning How To Learn

This link has video seminars by Dan Wolczuk from the University of Waterloo's Math Faculty. The goal of the video seminars is to help teach students how to learn both efficiently and effectively. Besides providing really useful study techniques, the last question of each assignment (besides a0) requires a single word or phrase to be printed that is mentioned in the assignment's chosen video. Thus, it is recommended to watch these video seminars for both critical self-development and completing assignments.


Marmoset will run your solutions on a number of test inputs and grade them automatically. You may submit your solutions as many times as you wish prior to the submission deadline. Your mark is determined entirely by the number of test inputs for which your best submission generates the correct answer (and does not "timeout", see below).

Marmoset will test your solution using two kinds of tests: public tests and private tests. Marmoset will show you the output of the public tests immediately. The result of private tests will be revealed after due day.

You must test your submissions prior to submitting them to Marmoset. You should not be using Marmoset as the only means of testing your solutions.

Marmoset FAQs

In CS 137, you will submit all your assignments on Marmoset.

What is Marmoset?

Marmoset is an automatic testing server. When you submit an assignment, it will judge your solution and automatically assign a grade. You'll be able to see the grade almost immediately.

How does Marmoset judge my program?

Marmoset will run you program against a few test cases. For each test case, it will compare your program output with the expected output. If the two outputs match EXACTLY, then you pass the test case. Your mark on the assignment problem will be the number of test cases you passed, out of the total number of test cases.

Note: Marmoset has a time limit for how long it will test your code for. This is to prevent inefficient code from slowing down the entire system. Therefore it is possible to not pass a test case because your code "timed-out". This also emphasizes the importance of efficient code.

How many times can I submit a solution?

You can submit as many times as you like before the due date. However...

What are public, private, and release tests?

There are three types of test cases on Marmoset: public, private, and release tests. We will not be using release tests in CS137! Public and private tests both count towards your assignment grade.

Public tests are the ones you see when you've just submitted your program. If you fail a public test, we usually tell you what the test case is. The test cases are usually straight foward. We want to make sure that your program compiles and is basically working.

After due day, we will reveal the result of private tests on your programs. Private tests are more complicated and sophisticated than public tests. Since you will not see the result of private tests until due day, you should test your code thoroughly before you submit it.

Am I penalized for incorrect submissions?

At CS 137, we take your best submission for each assignment problem. It doesn't matter if you submitted once, 3 times, or 30 times. As long as you have one perfect submission, you will get perfect on that problem.

Help! Marmoset cannot compile my program!

You can view your submission to see the compilation error.

So far, the most common cause of compile error is incorrect filenames. Marmoset is very picky about the filenames of your submissions, so please read the assignments carefully and make sure that your file has the right name.

Also, the file system on Marmoset is case-sensitive. If we ask you to submit 'hello.c', please ensure that your file name is not 'Hello.c' instead.

Help! I got a 0 on my submission!

The most common cause for a mark of 0 is output formatting.

Some students like to prompt the user when they write a C program. So, instead of

 scanf ("%d", &number); 

They say

 printf ("Please enter a number!\n");
 scanf ("%d", &number); 

Absolutely do not output extra text! If an assignment problem has sample inputs and outputs, then your program output must match those, down to the last character!

Intellectual Property

Students should be aware that this course contains the intellectual property of their instructor, ISA, and/or the University of Waterloo. Please ensure you read the intellectual property regulations.