C-ID Number COMP 122
Discipline Computer Science
Date Approved May 12, 2012
General Course Description

Introduces the discipline of computer science using a high level language utilizing programming and practical hands-on problem solving.

Minimum Units 3.0
Any rationale or comments

First course in a sequence of courses that is compliant with the standards of the Association for Computing Machinery (ACM).

Prerequisite(s) none
Corequisite(s)

None

Advisories/Recommendations

COMP 112 (CS0) or Comparable  Experience

Course Content

I. Programming Fundamentals (PF)
PF1. Fundamental programming constructs
Minimum coverage time: 9 hours

Topics

  1. Basic syntax and semantics of a higher-level language
  2. Variables, types, expressions, and assignment
  3. Simple I/O
  4. Conditional and iterative control structures
  5. Functions and parameter passing
  6. Structured decomposition

 Learning Outcomes

  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit;
  2. Modify and expand short programs that use standard conditional and iterative control structures and functions;
  3. Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions;
  4. Choose appropriate conditional and iteration constructs for a given programming task;
  5. Apply the techniques of structured (functional) decomposition to break a program into smaller pieces; and
  6. Describe the mechanics of parameter passing. 

PF2. Algorithms and problem-solving
Minimum coverage time: 6 hours

Topics

  1. Problem-solving strategies
  2. The role of algorithms in the problem-solving process
  3. Implementation strategies for algorithms
  4. Debugging strategies
  5. The concept and properties of algorithms

Learning outcomes

  1. Discuss the importance of algorithms in the problem-solving process;
  2. Identify the necessary properties of good algorithms;
  3. Create algorithms for solving simple problems;
  4. Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems; and
  5. Describe strategies that are useful in debugging.

II. Programming Languages (PL)
PL1. Overview of programming languages
Minimum coverage time: 2 hours

Topics

  1. History of programming languages
  2. Brief survey of programming paradigms
  3. Procedural languages
  4. Object-oriented languages

Learning outcomes

  1. Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today; and
  2. Identify at least one distinguishing characteristic for each of the programming paradigms covered in this unit.

PL4. Declarations and types
Minimum coverage time: 3 hours

Topics

  1. The conception of types as a set of values together with a set of operations Declaration models (binding, visibility, scope, and lifetime)
  2. Overview of type-checking

Learning outcomes

  1. Explain the value of declaration models, especially with respect to programming-in-the-large;
  2. Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size;
  3. Discuss type incompatibility;
  4. Demonstrate different forms of binding, visibility, scoping, and lifetime management; and
  5. Defend the importance of types and type-checking in providing abstraction and safety.

Topics fulfilling these tasks and outcomes could include OOPS and other programming elements.  This course is recommended to contain hands-on programming and problem solving tasks.

Laboratory Activities
Course Objectives

At the conclusion of this course, the student should be able to:

  1. Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions;
  2. Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems
  3. Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today
  4. Demonstrate different forms of binding, visibility, scoping, and lifetime management
Methods of Evaluation

May include any or all of:

Exams
Quizzes
Programming Projects
Discussions
Class Presentations

Sample Textbooks

Savitch, Walter: Problem Solving with C++ Latest Edition

Notes