CSCI 159: Computer Science I, Fall 2025

Course Syllabus

A first year course in computer science. Topics include structured programming, top-down program design, procedures, recursion, and an introduction to dynamic data structures. CSCI 159 was formerly called CSCI 160; credit will not be granted for both courses. Credit will only be granted for one of CSCI 160 or CSCI 159.
(3:0:2)
Prerequisite: Pre-calculus 12, MATH 152, or equivalent.

Instructor

Sarah Carruthers

  • Email: sarah.carruthers at viu.ca
  • Office: 315/217
  • Office Hours: Tuesday 13:00-14:00, Wednesday 15:00-16:00, Thursday 14:00-15:00

Course Website

VIU Learn

Schedules

  • Lecture Schedule:
    • First day of classes: September 2, 2025
    • Tuesday and Thursday, 8:30-10:00
  • Lab Schedule:
    • Labs begin second week of classes
    • Please attend your registered lab. Attendance is mandatory

Required Technology

This course will take place face to face. All lab (coding) work can be completed using the department's lab computers. These computers can also be accessed remotely using a terminal or putty. Students may want to work and collaborate with team members both during and outside lecture and lab time on documents and tasks. Therefore, students are required to have access to a minimum level of technology to successfully collaborate with classmates. This includes:

  • A computer or laptop with video/audio for attending and participating in team meetings
  • A phone or other tool for taking digital pictures
  • Required Software
  • Recommended Software

If you are lacking in access to any of the above technologies, please contact the instructor to discuss options (which may include using the Library Commons for wireless access.)

Topics

This course provides a hands-on introduction to problem solving, computer science, and programming. It will include the following topics:

  • Problem Solving Strategies
  • C++ Syntax and how to create and run programs
  • Making Decisions: Conditional statements and operations
  • Modularization: Creating and using functions
  • Iteration: Using loops and recursion
  • Basic Data Structures: arrays and structs
  • Dynamic Memory Allocation: pointers

Course Learning Outcomes

After successful completion of the course, students will be able to:

  • Translate solutions to simple problems into algorithms in English or pseudo code
  • Implement programming solutions to simple problems using the C++ programming language
  • Create, test, and run simple C++ programs on the command line
  • Recognize and develop a well-structured and readable code style
  • Choose an appropriate programming strategy to solve parts of a problem, including:
    • declaring and using variables and constants to store values
    • using conditional statements and operations to make decisions
    • creating and calling functions
    • using iteration to repeat a process
    • implementing an interface with simple user input/output
    • using data structures to store more complex data
  • Decompose large problems into smaller sub-problems that are easier to solve

Course Schedule

This course builds each week on what we've already learned. Here is a tentative list of what we'll cover each week.

  1. Week 1: Course Intro
  2. Week 2: Solving problems with C++ programs
  3. Week 3: Functions and Input Output
  4. Week 4: Control and Conditional statements
  5. Week 5: Recursion
  6. Week 6: Loops
  7. Week 7: Nested loops and midterm exam
  8. Week 8: Basic Data Structures: Arrays
  9. Week 9: Strings and Arrays
  10. Week 10: More advanced data structures
  11. Week 11: Reading Break: No Classes or Labs
  12. Week 12: Pointers and Memory allocation
  13. Week 13: Memory allocation
  14. Week 14: Review

A detailed schedule is available on VIU Learn.

Textbooks

This course will make use of a number of resources, including:

  • Instructor lectures, notes, and slides
  • Book chapters
  • Online articles and videos

Please see VIU Learn for an up-to-date list of resources for each module.

Student Evaluation

Course includes lecture (theory) and lab (practical) components. Students will receive a single final grade assessing their performance in the lab and lecture components, combined. Students must also achieve separate passing grades in the lecture and lab assessments in order to earn an overall passing grade in the course.

  • Lecture:
    • Exams: 50%
      • Midterm: 30%
      • Final Exam: 70%
    • Quizzes: 25%
  • Labs: 25%
    • 10 Labs

Students who miss an assessment for a valid reason, such as illness, and who communicate this reason in a timely manner to the instructor will be given an option to make up the missed assessment. Students who miss a team assessment will not be eligible for the team assessment grade, and their individual assessment will be assigned to both assessment marks.

Online Quizzes

Each week, course content will be tested with an online quiz in VIU Learn. Students may take the quiz as many times as they like before the quiz is due, to test their understanding. Quizzes are timed, and so students should take notes during class and review the course slides/notes before attempting the quiz. Students will receive the highest grade achieved, for each quiz.

Grading Scheme

The following scale will be used. The instructor reserves the right to lower the numerical score required for a particular letter grade if that seems appropriate, but the same conversion will be applied to all persons in the class. Under no circumstances will the numerical score required for a particular letter grade be raised.

A+90-100
A-80-84
B+76-79
B72-75
B-68-71
C+64-67
C60-63
C-55-59
D50-54
F0-49