Butte College

Course Outline

2026-2027 Catalog

CSCI 20 - Programming and Algorithms I

Catalog Description

Transfer Status
CSU/UC
Unit(s)
3.00
  • Lecture: 34.00 Contact hours/68.00 Out of class hours/102.00 Total hours/2.00 Unit(s)
  • Lab: 51.00 Contact hours/0.00 Out of class hours/51.00 Total hours/1.00 Unit(s)
  • Total: 85.00 Contact hours/68.00 Out of class hours/153.00 Total hours/3.00 Unit(s)

Course Description: This course is an introduction to the discipline of computer science, with a focus on the design and implementation of algorithms to solve simple problems using a high-level programming language. Topics include fundamental programming constructs, problem-solving strategies, debugging techniques, declaration models, and an overview of procedural and object-oriented programming languages. Students will learn to design, implement, test, and debug algorithms using pseudocode and a high-level programming language. (C-ID COMP 122).

Objectives

Upon successful completion of this course, the student should be able to:

  1. Design, implement, test, and debug computer programs using basic computation, simple Input/Output (I/O), standard conditional and iterative structures, and functions.
  2. Use pseudocode and a high-level programming language to implement, test, and debug algorithms that solve simple problems.
  3. Summarize the evolution of programming languages and describe how this evolution has led to the programming paradigms in use today.
  4. Identify and demonstrate different forms of variable binding, visibility, scoping, and lifetime management.

Course Content

Topic Titles / Suggested Time Topic

Lecture

Lecture topics and suggested hours
TopicsLec Hrs

Basic syntax and semantics

4.00

Variables, types, expressions, and assignment

3.00

I/O

3.00

Conditional and iterative control structures

4.00

Functions and parameter passing

6.00

Structured decomposition

2.00

Problem-solving strategies and the role of algorithms in the problem-solving process

2.00

Implementation and debugging strategies for algorithms

2.00

Properties of algorithms

2.00

History of programming languages and survey of programming paradigms

1.00

Procedural and object-oriented programming languages

2.00

Variable binding, visibility, scope, lifetime, and type-checking

3.00
Total Hours:34.00

Lab

Lab topics and suggested hours
TopicsLab Hrs

Basic syntax and semantics

6.00

Variables, types, expressions, and assignment

6.00

I/O

4.50

Conditional and iterative control structures

6.00

Functions and parameter passing

9.00

Structured decomposition

3.00

Problem-solving strategies

3.00

Implementation and debugging strategies for algorithms

6.00

Procedural and object-oriented programming languages

3.00

Variable binding, visibility, scope, lifetime, and type-checking

4.50
Total Hours:51.00

Methods of Instruction

  1. Collaborative Group Work
  2. Demonstrations
  3. Homework: Students are required to complete two hours of outside-of-class homework for each hour of lecture
  4. Lecture
  5. Multimedia Presentations

Methods of Evaluation

  1. Quizzes
  2. Homework
  3. Lab Projects
  4. Mid-term and final examinations

Examples of Assignments

Reading Assignments

  1. Read the chapter in your textbook on dynamic arrays. Be prepared to explain in class the difference between dynamic and static allocation of arrays, and demonstrate the C++ code needed to declare, initialize, and destroy a dynamic array.
  2. Read the brief history of the Ada programming language presented online at adacore.com. Prepare a short summary of Ada language features, and compare/contrast with the features of C++.

Writing Assignments

  1. Write the pseudocode for the algorithm to bubble sort the contents of an integer array. Prepare a brief analysis of your algorithm, including a description of its efficiencies (or inefficiencies) and debugging techniques suitable for your algorithm.
  2. Write a short outline to decompose the following programming problem: create a program to model a game of Hangman on the computer. Your decomposition should include all user inputs, program outputs, conditional and iterative constructs, and processing required to create this program.

Out-of-Class Assignments

  1. Use the Internet to locate four programming languages (not including the language being used in this class). Write a brief summary of the four languages, including key language features and the programming paradigm(s) that the languages support.
  2. Visit the website freecode.com and search through the projects on the website. What do you find to be the 2-3 most popular programming languages? What do you find to be the 2-3 least popular languages? Be prepared to discuss your findings in class.

Recommended Materials of Instruction

Forouzan, Behrouz A.; Gilberg, Richard. (2020). C++ Programming: An Object-Oriented Approach. McGraw Hill, 1st. 9780073523385.

Savitch, Walter; Mock, Kenrick. (2017). Problem Solving with C++. Pearson, 10th. 978-0134448282.

Murach, Joel. (2018). Murach's C++ Programming. Mike Murach. 978-1943872275.

Minimum Qualifications

Computer Science (Masters Required)