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

New Course Proposal - CMPT 128-3 Introduction to Computing Science and Programming for Engineers

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

December 17, 2003

Calendar Information

Course Number: CMPT 128

Course Title: Introduction to Computing Science and Programming for Engineers

Credit Hours: 3 Vector: 3-0-0

Course Description

An introduction to computing science and computer programming, suitable for students wishing to major in Engineering Science or a related program. This course introduces basic computing science concepts, and fundamentals of object oriented programming. Topics include: fundamental algorithms and problem solving; abstract data types and elementary data structures; basic object-oriented programming and software design; elements of empirical and theoretical algorithmics; computation and computability; specification and program correctness; and history of computing science. The course will use a programming language commonly used in Engineering Science.

Prerequisite: ENSC 150

Recommended: None.

Corequisite: None.

Special Instructions: None.

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

None.

Rationale for Introduction of this Course

This course is a C++ version of CMPT126 for the students in the School of Engineering Science or a related program.

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

Required; enrolment estimated at 200 per year.

Scheduling and Registration Information

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

2005-1 and twice a year thereafter (spring and summer semesters).

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, 104, 125, 126 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.

CMPT 128 Sample Course Outline

  1. Fundamental Programming Constructs: variables; types; expressions; statements; simple I/O; conditional and iterative execution; etc.
  2. Algorithms and Problem Solving: history of the idea of algorithms; examples of simple but interesting algorithms; simple problem solving strategies; role of algorithms in problem solving; concept and properties of algorithms.
  3. Fundamental Data Structures: primitive types; arrays; strings; lists; queues; stacks
  4. OOP: classes and instances; exception handling; GUI; references; event-driven programming; etc.
  5. Software development process: problem statement->OO design (pseudo code)->OO solution->test/debugging.
  6. Recursion: Concept of recursion; divide-and-conquer strategies.
  7. Specifying correctness; proving correctness; designing tests
  8. Basic Algorithm Analysis: Big-O Notation; standard complexity classes.
  9. Fundamental Computing Algorithms: Sequential and binary search; Bubble or Selection sort; O(nlogn) sorting algorithms; simple numerical algorithms.
  10. History of Computation: History of Computation as a Science; History of Computers; History of Programming languages.
  11. Basic computability and applications.
  12. Introduction to social aspects.