CS138 - Introduction to Data Abstraction and Implementation

CS138 Introduction to Data Abstraction and Implementation


The weekly tutorials for CS 138 are designed to reinforce concepts introduced in lecture, as well as give extra guidance in preparation for assignments and exams. The format will be more interactive than lectures in order to provide a more dynamic learning environment. A list of the tutorials for this term can be found here.


After your solutions are submitted to the Marmoset automatic grading system, 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 (though the number of test runs is limited; see below). Your mark is determined entirely by the number of test inputs for which your best submission generates the correct answer.

Marmoset will test your assignment using any of the three different kinds of tests: public tests, release tests and secret tests. We will only use public and secret cases in CS138. Marmoset will show you the output of your code when executed with the public tests input. The results of secret tests will be posted after the assignment due date and will let you know if you passed or failed them.

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.

MOSS (Measure Of Software Similarity):

Moss is an automatic system for determining the similarity of programs. As CS138 assignments are individual assignments (unless otherwise specified in the assignments), students are expected to finish them by themselves. As such, all submissions will be examinated using MOSS.

Course Personnel:

  • Zuomiao Hu - ISA
  • Email: cs138@uwaterloo.ca
  • Office hours: Wednesdays 9:00am-11:00am, Thursdays 9:00am-11:00pm

Piazza Guidelines:

Here are some guidelines that you should keep in mind when posting items to Piazza:

  • Please remember that everything you post to Piazza is public - everyone enrolled in CS 138 will be reading it. As a result, in any posts you make, do NOT give away any details on how to do any of the assigments. This could be construed as cheating, and you will be responsible as the poster. If you have questions about an assignment that requires you to give specific details of your solution, ask the tutor or the instructor by e-mail. If the tutor/instructor feels that posting it to Piazza is appropriate, he or she will do so.

  • Please try to use meaningful titles for all of your questions. Titles such as "Question about C++" or "Need help on Question 3" do not offer much insight into what your post is about. A better title would be something like "Iterating Over a Vector" or "Question About Maps."

  • Please consider tagging your question to help others who have questions similar to yours. Tagging is done by using the hash symbol (#) followed by a short string of text. In particular, if your question relates to a specific question on the assignment, for example Assignment 1 Question 3, try tagging your question #a1p3.

  • Keep posts to Piazza related to the course, concise, and topical. As all students are expected to read Piazza on a regular basis, try not to waste the time of readers.

  • Please read all questions and reponses that are in Piazza before asking a question. If you ask a question that has already been answered, you are wasting everyone's time. In particular, please check for questions that have tags that relate to your problem.

  • Please don't post to Piazza things with little useful information to the readers. Posts like "I have the same question as this one just posted", or "I agree with this comment" provide little insights and waste everyone's time.

  • Please don't post complaints about the course to Piazza. If you have a concern about the course, please bring it to the instructor, tutor or the course ISC.