CA.SFU.FAS.UCC/Papers:2003-19

New Course Proposal - CMPT 120-3 Introduction to Computing Science and Programming I

G. Baker, B. Bart, T. Dixon, Q. Gu, A. Lavergne, D. Mitchell, Syllabus Working Group, School of Computing Science

October 23, 2003

Calendar Information

Course Number: CMPT 120

Course Title: Introduction to Computing Science and Programming I

Credit Hours: 3 Vector: 3-0-0

Course Description

An elementary introduction to computing science and computer programming, suitable for students with little or no programming background. Students will learn fundamental concepts and terminology of computing science, acquire elementary skills for programming in a high-level language and be exposed to diverse fields within, and applications of computing science. Topics will include: pseudocode, data types and control structures, fundamental algorithms, computability and complexity, computer architecture, and history of computing science. Treatment is informal and programming is presented as a problem-solving tool.

Prerequisite: BC Math 12

Recommended: None.

Corequisite: None.

Special Instructions: None.

Course(s) to be dropped if this course is approved:

CMPT 101-4 and CMPT 201-4 are proposed to be replaced by the new three-course sequence CMPT 120-3, CMPT 125-3, CMPT 225-3.

Rationale for Introduction of this Course

At present, students enter CMPT 101 with diverse backgrounds and expectations. A large proportion of students have little or no exposure to programming, and a similarly large fraction have written substantial programs or written programs in more than one language. This creates a problem in choosing a rate and depth of coverage for the course. CMPT 120 is designed for those with little or no exposure to computing science and programming, with a bypass mechanism for those with substantial prior experience.

Will this be a required or elective course in the curriculum; probable enrolment when offered?

Required; enrolment estimated at 800 per year.

Scheduling and Registration Information

Indicate Semester and Year this course would be first offered and planned frequency of offering thereafter.

2004-3 and every semester thereafter.

Which of your present CFL faculty have the expertise to offer this course? Will the course be taught by sessional or limited term faculty?

Almost all present faculty could teach this course. Sessionals or limited term faculty may on occasion teach a parallel section to that taught by a CFL faculty member serving as course champion.

Are there any proposed student fees associated with this course other than tuition fees?

No.

Is this course considered a `duplicate' of any current or prior course under the University's duplicate course policy? Specify, as appropriate.

Students with credit for CMPT 101, 102, 103, 104 or any course numbered CMPT 200 or higher may not take this course for further credit.

Resource Implications

Note: Senate has approved (S.93-11) that no new course should be approved by Senate until funding has been committed for necessary library materials. Each new course proposal must be accompanied by a library report and, if appropriate, confirmation that funding arrangements have been addressed.

Provide details on how existing instructional resources will be redistributed to accommodate this new course. For instance, will another course be eliminated or will the frequency of offering of other courses be reduced; are there changes in pedagogical style or class sizes that allow for this additional course offering.

This course will use instructional resources currently used for CMPT 101 as well as new resources made available through the Double the Opportunity (DTO) program.

Does the course require specialized space or equipment not readily available in the department or university, and if so, how will these resources be provided?

No.

Does this course require computing resources (e.g. hardware, software, network wiring, use of computer laboratory space) and if so, describe how they will be provided.

This course will use instructional resources currently used for CMPT 101 as well as new resources made available through the Double the Opportunity (DTO) program.

Outline of CMPT-120 Syllabus

  1. Some elements of discrete math, as needed.
  2. Fundamental Programming Constructs: basic syntax and semantics of a high-level language; variables; types; expressions; statements; simple I/O; conditional and iterative execution; procedure and function calls; parameter passing; structured decomposition.
  3. Algorithms and Problem Solving: history of the idea of algorithm; examples of simple but interesting algorithms; simple problem solving strategies; role of algorithms in problem solving; concept and properties of algorithms.
  4. The RAM model of computation and its relationship to current electronic computers. The idea of computation and computation as a science. The notion of computable objects/behaviours.
  5. Basic Data Structures: (a few) primitive types; strings; arrays or lists
  6. The idea of algorithm analysis: informal complexity notions; reasoning about algorithm and program correctness.
  7. Fundamental Computing Algorithms: Sequential search; Bubble/Selection sort. simple numerical algorithms;
  8. Defining problems; defining solutions; specifications ;
  9. Prerequisistes:  BC-12 Math.

Sample Course Outline

Unit
Week
Comp. Sci.
Algorithms
Prog. Lang.
Assignment/Examples
1.
1
Sketch of CS
Intro of course
Familiar Algs. (e.g., manual arithmetic) + non-obvious examples
Psuedo-code+
real example
Type, compile, run, submit
a given sample program
2.
1
Computer, program, programming
language, OS, application program
Examples of computing
with a sequence of integer
calculations
Int type (values + operators);variables and
assignment, sequencing, very simple output
Program with sequence
of calculations and simple output
3.
1
RAM model of
computation
Simple conditionals
Boolean type & simple expressions; simple if-then/-else blocks
Program with output
depending on input and decisions by user
4.
1
RAMs and real
computers
Iteration, max/min/sum
linear search
Iteration (while/for)
loops, 1-dim array
Compute max/min/sum
linear search
5.
1
File systems, OS,
history of CS as a
science

Basic file I/O
Examples on file I/O
6.
1
Binary encoding
Binary and other
bases, binary arithmetic
EvaluatingBooleans,
nesting conditionals
Base conversion
7.
1
Computable functions
Collections, dot
production
2-dim arrays
Scalar x vector, dot product
8.
1
Problem decomposition &  solving strategies
Basic graphics
Library, procedures
parameter passing
Drawing/moving simple
objects, bar-graphs
9.
1
Floating point numbers, errors
Numerical methods
Real type
mean/std.dev/draw curves
10.
1
Non-computable functions
String processing
reverse
String type, ASCII
String processing
11.
1
Correctness
Algorithmic paradigms
Programming languages

12.
1
Time complexity
Ordering, selection/insertion sort
Programming languages
Implementation of sorting algorithms