CSCI 159: Computer Science I, Fall 2022

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 11:30-12:30, Wednesday 13:00-14:00

Course Website

VIU Learn

Schedules

  • Lecture Schedule:
    • First day of classes: September 6, 2022
    • Tuesday and Thursday, 10:00-11:30
  • 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:

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: Basic Data Structures: Arrays
  8. Week 8: Strings and Arrays
  9. Week 9: More I/O and midterm exam
  10. Week 10: Reading Break. No classes!!
  11. Week 11: More advanced data structures: 2D arrays
  12. Week 12: More advanced data structures: Structured Data
  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 (50%)
    • Midterm: 12.5%
    • Final Exam: 37.5%
  • Labs (50%):
    • Readiness Assessments: 10%
    • Labs: 40%

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.

Lab Readiness Assessment Tests

Labs will use a Team Based Learning approach. All class members will be assigned to a team at the start of the term. Each Module will include one Lab, which will include both individual and team work and submissions. The goal of these labs is to give students a chance to practice what they're learning, get frequent feedback (from team members, classmates, and the instructor), and be introduced to a diversity of ideas and approaches.

Preparation for each module's lab will be assessed using Reading Assessment Tests (RATs). We will go over this process in the first week of labs. Readiness Assessments include both an individual (iRAT) and team (tRAT) component. Each student will receive both their iRAT grade and the team's tRAT grade. Details are available on VIU Learn.

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