To see revisions of this document or browse other course outlines, please Log In

Tools and Techniques for Software Development Winter 2023
CS 136L

Published Jan 11, 2023

Class Schedule

Please log in to view this content.

Instructor & TA (Teaching Assistant) Information

Please log in to view this content.

Course Description

CS 136L

This course introduces students to tools and techniques useful in the software development lifecycle. Students learn to navigate and leverage commands and utilities in the Linux Command Line Shell. Students gain experience in version control software, writing scripts to automate tasks, and creating effective test cases to identify bugs. Tracing and debugging strategies are discussed. Students also gain experience in using built-in support for version control, testing, debugging, build automation, etc. in integrated development environments (IDEs). [Note: Course will be graded on a CR/NCR basis.]

Prereq: At least 90% in CS 115 or at least 70% in CS 116 or at least 60% in CS 135 or CS 145. Coreq: CS 136 or CS 146

Learning Outcomes

By the end of this course students should be able to:
Interact with the Linux Operating System using a command line shell and gain familiarity with commands, utilities and tools.
Create scripts to automate tasks and increase productivity while working on a software project.
Design test cases and automate the testing process to check a program for functional correctness and incorrect memory usage.
Use version control systems to share, contribute, manage and track code.
Separately compile code modules and leverage build automation tools to do so efficiently.
Effectively trace and debug software to identify sources of errors.
Work with Integrated Development Environments and use supported features such as debugging, version control, build automation etc.

Tentative Course Schedule

Course content is available for reading on the Open EdX platform. CS136L will not hold typical lectures. Instead, students will meet in-person during lab hours, once a week. Students should come prepared, having already read the assigned module on EdX, completed the pre-class quiz and taken a look at the lab problems. During lab hours, students are expected to complete the lab problems on their own. Labs are meant to be hands-on activity-based learning time although the instructor might summarize key points from the assigned reading at the beginning. Instructors and ISAs will be available during lab time to assist with answering student questions. While the lab problems are not due until later in the week, the labs are designed with the intent that students should be able to complete the questions during the assigned lab time.

Students are expected to bring their own devices to work on the lab problems. Contact your instructor immediately if this is going to be a problem.

The following is a tentative ordering of the modules that will be covered in the course:

Module 0: Linux Shell, a first look

Module 1: More Linux Shell

Module 2: Testing and Debugging

Module 3: Shell Scripts

Module 4: Integrated Development Environments

Module 5: Version Control

Module 6: The C/C++ Preprocessor

Module 7: Memory Errors

Module 8: Separate Compilation and Build Automation

Module 9: Debugging

Texts / Materials

Title / Name Notes / Comments Required
Laptop with internet capabilities Contact your instructor immediately if you have concerns regarding your laptop Yes

Student Assessment

Component Value
Labs Credit/No-credit
Pre-Class Quizzes Credit/No-credit

CS136L is a Credit/No-credit course. Credit is determined based on student submissions of the problems in lab. The following definitions will be useful in understanding how credit is determined.

Passed Labs: A lab is marked as passed if the student meets the pass threshold by the pass deadline. There are two pass deadlines; the first 5 labs have a pass deadline roughly in the middle of the term while the pass deadline for the last 5 labs is the end of the last full week of the term. See the course schedule for exact dates.

Completed Labs: A lab is marked as completed if a student has achieved the completion threshold by the lab's completion deadline. Unlike pass deadlines, lab completion deadlines are the Friday when the lab is covered in class. For exact dates, see the Course Schedule.

Each lab will clearly state the pass and completion thresholds at the start of the lab's description. A pass threshold is meant to ascertain whether the student has at least a passing knowledge of the material covered in the Module. A completion threshold, typically higher than the pass threshold, attempts to ascertain whether the student has a solid understanding of the module.

Completed pre-class quizzes: Each module comes with built-in concept check questions. These are the pre-class quiz for that module. A pre-class quiz is marked as completed, if a student achieves the quiz completion threshold by the quiz completion deadline. The quiz completion threshold, i.e., the number of concept check questions that must be correctly answered, will be clearly mentioned in the first lesson of the module. The quiz completion deadline is available in the Course schedule page.

Assignment Screening

Measure of Software Similarities (MOSS) is used in this course as a means of comparing students' assignments to ensure academic integrity. We will report suspicious activity, and penalties for plagiarism/cheating are severe. Please read the available information about academic integrity very carefully. Discipline cases involving any automated marking system such as Marmoset or MarkUs include, but are not limited to, printing or returning values in order to match expected test results rather than making an actual reasonable attempt to solve the problem as required in the assignment question specification.

Administrative Policy

Use of Microsoft Teams: The use of Microsoft Teams is exclusive to office hours, question and answer sessions, and private appointments; and should be limited to the specific channel and timeslot.  You should not post nor discuss anything relating to the assignments with others  on Microsoft Teams, and specific questions should not be posted directly on Teams.  If you have a question, use the discussion forums if applicable or email the appropriate person. 

Mental Health Support: The Faculty of Math encourages students to seek out mental health support if needed.

  • On-campus Resources:
  • Off-campus Resources:
    • Good2Talk (24/7): Free confidential help line for post-secondary students. Phone: 1-866-925-5454 (Ontario and Nova Scotia only)
    • Here 24/7: Mental Health and Crisis Service Team. Phone: 1-844-437-3247 (Waterloo Region only)
    • OK2BME: set of support services for lesbian, gay, bisexual, transgender or questioning teens. Phone: 519-884-0000 extension 213 (Waterloo Region only)
    • EMPOWER ME 1-833-628-5589 for Cdn./USA other countries see: http://studentcare.ca/rte/en/IHaveAPlan_WUSA_EmpowerMe_EmpowerMe
      • EMPOWER ME in China:
        China North 108007142831
        China South 108001402851

Diversity: It is our intent that students from all diverse backgrounds and perspectives be well served by this course, and that students’ learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In particular:

  • We will gladly honour your request to address you by an alternate/preferred name or gender pronoun. Please advise us of this preference early in the term so we may make appropriate changes to our records.
  • We will honour your religious holidays and celebrations. Please inform of us these at the start of the course.
  • We will follow AccessAbility Services guidelines and protocols on how to best support students with different learning needs.

 

University Policy

Academic integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check the Office of Academic Integrity for more information.]

Grievance: A student who believes that a decision affecting some aspect of their university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4. When in doubt, please be certain to contact the department’s administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for their actions. [Check the Office of Academic Integrity for more information.] A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate associate dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline. For typical penalties, check Guidelines for the Assessment of Penalties.

Appeals: A decision made or penalty imposed under Policy 70, Student Petitions and Grievances (other than a petition) or Policy 71, Student Discipline may be appealed if there is a ground. A student who believes they have a ground for an appeal should refer to Policy 72, Student Appeals.

Note for students with disabilities: AccessAbility Services, located in Needles Hall, Room 1401, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with AccessAbility Services at the beginning of each academic term.

Turnitin.com: Text matching software (Turnitin®) may be used to screen assignments in this course. Turnitin® is used to verify that all materials and sources in assignments are documented. Students' submissions are stored on a U.S. server, therefore students must be given an alternative (e.g., scaffolded assignment or annotated bibliography), if they are concerned about their privacy and/or security. Students will be given due notice, in the first week of the term and/or at the time assignment details are provided, about arrangements and alternatives for the use of Turnitin in this course.

It is the responsibility of the student to notify the instructor if they, in the first week of term or at the time assignment details are provided, wish to submit alternate assignment.