Course Syllabus

CS161 provides an overview of the fundamental concepts of computer science. Introduction to problem solving, software engineering, and object-oriented programming. Includes algorithm design and program development.

Prerequisites: MTH 112* [C] or Placement Test MPT(33) or Placement Test MPAL(061)

Instructor: Justin Goins
For office hours, please see the Home Page.
Please a
lways include "CS161" in the subject line of your emails.

Course content

  • Identifiers and primitive data types
  • Assignment, arithmetic, logical, and relational operators
  • Expressions and statements
  • Flow of control: selection, repetition, recursion
  • Functions/parameter-passing including call-by-value and call-by-reference
  • 1- and 2-dimensional arrays, strings, and other structured data types
  • Pointers
  • Error Handling
  • Debugging

Course Objectives

  1. Design and implement programs that require:
    1. various control statements involving selection and repetition
    2. expressions with variables, constants, function calls, pointers, and
      arithmetic/relational operators with mixed data
    3. arrays, strings, and other data structures
    4. library functions and programmer-defined functions with parameter-passing by value and by reference
    5. abstraction, modularity, separation of concerns
    6. use of the object-oriented programming model
  2. Debug programming syntax and run-time errors.
  3. Produce recursive algorithms, and choose appropriately between iterative and recursive algorithms.
  4. Describe and apply basic software engineering design principles and software quality

Steps to Get Help

  1. Reread the assignment, lecture slides, labs, and/or syllabus
  2. Google/Bing/Open a textbook
  3. Ask a friend
  4. Bring up the question during lab hours (certain days of the week)
  5. Attend office hours with Justin

Attendance Policy

  • Lecture: Required. In class extra credit exercises can only be made up with approved absences. You are expected to be present when exams are scheduled. If extenuating circumstances require you to miss a lecture, please email the instructor. The instructor will determine whether circumstances warrant an excused absence.
  • Lab Days: Required. Students are expected to behave professionally and arrive on time. Missed labs result in a zero score for the lab.
    • Planned absences: A lab may be excused with 24 hour notice prior to a planned absence. Simply bring the completed lab work to the next lab day. Note that a missed quiz will count as one of the two dropped quizzes.
    • Extenuating circumstances: Unplanned absences must be petitioned to the instructor by the end of the day of the absence. Legitimate excuses include (but are not limited to) family emergency, injury, hospitalization, death, birth of a child, trauma, or illness. Petitioning is contacting the instructor via email. The email subject line should start with CS161. The instructor will or will not provide consent to the absence. All decisions made by the instructor are final.
  • Exams: Required. If you are unable to attend an exam you should notify the instructor at least one week in advance via email. If the absence is due to a valid excuse (as determined by the instructor) then a make-up exam will be arranged. Missing an exam without prior arrangements will result in a grade of zero on that exam. If there are legitimate extenuating circumstances, please contact the instructor to explain your situation. All decisions made by the instructor are final.
  • If the instructor is late for a lecture or lab day, please remain in the classroom for 10 minutes.

Technology Requirements

  • This is predominantly a programming course so you will be using your computer a lot.
  • Normally I ask that cell phones and other mobile devices should be silenced and away during lecture. Due to the "remote delivery" format of this class, I realize that students don't always have a silent area in which to work. However, please try to be courteous to the instructor and other students in the Zoom classroom. If you are not intending to speak, keep your microphone muted to reduce background noise.

Grading Information

Grades will be posted on the grade page of Canvas as they become available.

All written work must be submitted as a PDF file. Failure to follow this rule will result in a score of 0 on the assignment.

Grading Scale

Letter Grade Percentage
A >= 92.5
A- >= 90 - 92.5
B+ >= 87.5 - 90
B >= 82.5 - 87.5
B- >= 80 - 82.5
C+ >= 77.5 - 80
C >= 72.5 - 77.5
C- >= 70 - 72.5
D+ >= 67.5 - 70
D >= 62.5 - 67.5
D- >= 60 - 62.5
F < 60

Course Weighting

Lab Work - 10%

  • Some lecture days will be announced in advance as "Lab Days" (see the Lectures & Reading page)
  • Some parts of the lab will be group work while others will be individual work. You can submit one copy for any portion of the lab that is group work.
  • Labs are graded on a 10-point scale and primarily based on participation and effort, rather than correctness.
  • These labs are intended to enhance the lectures using hands-on learning.
  • Labs are designed to be mostly finished during the lecture and graded during lab time by your lab instructor (or automatically by Canvas).
  • If you attended a lab and did not finish, you can earn credit for the lab portion of the work as long as it is completed prior to next week's lab. Note: this policy does not apply to quizzes (which cannot be turned in late). If you miss a quiz during lab, you will not be able to complete it unless there are extenuating circumstances.
  • If you have a problem with a lab grade, you must contact the instructor through EMAIL within ONE WEEK of receiving your grade. After one week, you will not be able to dispute your grade.

Quizzes - 10%

  • Quizzes will be given at random! These can occur on lab days or during lecture days.
  • Your lowest quiz score will be dropped
  • If you arrive more than 15 minutes late to lab (that happens to have a quiz) you will not be allowed to take the quiz and will receive a 0 grade. Contact the instructor for extenuating circumstances

Software Design/Critique - 10%

  • For each programming assignment (EXCEPT FOR THE FIRST ONE) you will submit a design document explaining your proposed software implementation. The design will be submitted one week prior to the programming assignment deadline. A TA will review your design and assign a corresponding grade. In addition, Canvas will randomly select one of more of your peers to review your work and provide constructive feedback.
  • You will also review proposed designs from your fellow students. For each of the last 4 programming assignments (where design documents were required) Canvas will give you two design documents to review. You will evaluate the design documents and provide constructive feedback. If you fail to complete these design critiques on time you will lose that portion of the final grade.

Assignments - 28%

  • There are 5 programming assignments to be completed over the course of this class.
  • DO NOT expect answers to emails about assignments after 5pm on the day it is due.
  • All assignments include writing a computer program, which MUST compile and execute on FLIP (a set of ENGR servers available for student use).
  • Programming assignments that do not compile will receive a grade of zero on the implementation portion of the assignment.
  • Assignments are to be turned in before 11:59pm on the deadline date, otherwise the assignment is late.
  • Programs are evaluated on how well they solve the assigned problem (adherence to program specification), proper formatting/use of comments, and creativity.
  • You have up to 5 free late days to be used on any homework assignment (not the final project). You can use the late days on one assignment or spread the days out across assignments (in 1 day increments). An assignment will be accepted without penalty as long as it is submitted prior to the number of late days you have remaining. After using your 5 free late days, a late assignment will be deducted 15 points per late day. Late assignments should be submitted to Canvas (in the same way that you would submit an on-time assignment).
  • If you have a problem with an assignment grade, you must contact the grader through EMAIL within ONE WEEK of receiving your grade. After one week, you will not be able to dispute your grade.

Midterm Exams - 22% (11% for each exam)

  • There are two midterm exams for this course.
  • The exams can contain true/false, multiple-choice, or coding questions. They will be administered during lecture time.
  • Students must be present during exams (see the Attendance Policy).

Final Project - 20%

  • The final project may include any combination of questions, programming, written work, and explanation of provided code.
  • Additional details will be given in the second half of the term.

Textbook Resources

Additional Textbook Resources

Title: Starting Out with C++ : Early Objects, 8th Edition
Author(s): Gaddis T., Walters, & Godfrey (2014)
Publisher: Boston, MA: Addison-Wesley
Digital ISBN: 978-0133449198
Paperback ISBN: 978-0133360929

Title: C/C++ Programmer's Reference, 3rd Edition
Author(s): Schildt, H. (1998)
Publisher: Berkley, CA: Osborne McGraw Hill
Digital ISBN: 0-07-213293-0
Paperback ISBN: 0-07-882476-1

Title: Absolute C++, 5th Edition
Author(s): Savitch, W. (2012)
Publisher: Boston, MA: Addison-Wesley
Digital ISBN: 978-0132846578
Paperback ISBN: 978-0132989923

Title:  Programming and Problem Solving with C+, 5th Edition
Author(s): Dale, N. & Weems, C. (2009)
Publisher: Burlington, MA: Jones & Bartlett Publishers 
Paperback ISBN:  978-0763771560

Academic Dishonesty

Students are encouraged to discuss high-level approaches and concepts to learn from one another. However, you are expected to do your own work for every assignment. Assignments are not paired-programming and you should expect all assignments to be checked for similarities with others in the class, prior class assignments, and work published online. You should never be copying someone else's work and changing a small amount of that work, such as variable names, comments, spacing, etc. Working together is not allowed on assignments, quizzes, or exams. If you utilize online code examples then you need to cite the resource and author(s). You are expected to be familiar with section 4.2 of the Oregon State University Code of Conduct available at:

Paying someone to complete your work is unacceptable and will result in immediate referral to the Office of Student Conduct! Cheating and plagiarism are not taken lightly!

If a submission appears to be plagiarized, the instructor will file an academic misconduct report. The College of Engineering will review the evidence and determine whether the allegation is justified. In the case of shared work, the student sharing the work and the student(s) copying the work will all receive zeros. In addition, substantiated charges will be documented in your academic record at OSU.

A first-time violation of these rules normally results in a zero grade for the relevant submission. Further incidents of academic dishonesty may result in more substantial penalties such as an F for the course and additional communication with the Office of Student Conduct.

Statement Regarding Students with Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at

DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.

Religious Accommodations

Oregon State University recognizes a diverse group of students and the university accommodates diverse religious holidays. Please see the OSU Equal Opportunity and Access website for additional information on the religious accommodation process.

Reach Out for Success

University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it’s important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success at If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255)

The fine print...

Note that the course summary shown below is automatically generated by Canvas and will expand as the class progresses.

Course Summary:

Date Details Due