CS 221 - First Course in Computer Science for Engineers

 

Credits: 3

 

Note: This class is a service class for many of the other Engineering majors and is not open to computer science or electrical and computer engineering majors.

 

Course Description

 

Characteristics of a procedure-oriented language; description of a computer as to internal structure and the representation of information; introduction to algorithms. Emphasis will be placed on the solution of characteristic problems arising in engineering. Not open to students who have received credit for CS-115.

 

Needed Skills

 

Students should already have basic computing skills, like being able to copy files from one place to another, renaming files, printing files, browsing the Web.

 

Learning Outcomes

 

The student will be able to:

1. Design and implement well-written programs in C++ to solve problems: problem solving, testing and debugging programs, understand and use the fundamental structures of structured programming, understand and use concept of modular programming – functions

2. Understand and use simple data structures: strings and arrays

3. Understand and implement some sorting and searching algorithms

4. Become familiar with OOP - using objects of predefined class types: filestreams, strings

5. Become aware of ethical concerns for programmers

 

Measures

 

These outcomes will be measured by the grading of: quizzes, programs, lab reports and exams. Additional measurements will be obtained through evaluation questions gathered by University-level course assessment supplemented by questions given below.

 

CAC Categories

 

Topic

Core

Advanced

Math Fundamentals

0

0

Data Structures

7

0

Algorithms & Software Design

5

0

Computer Organization and Architecture

0

0

Concepts of Programming Languages

17

0

Social and ethical issues

1

0

Total

30

0

 

Math Fundamentals: none

 

Data structures (7): Core: Primitive types, strings, arrays

 

Algorithms and Software (5): Core: Structured design and programming, problem-solving strategies, implementation strategies for algorithms, debugging strategies, the concept and properties of algorithms, testing

 

Computer Organization and Architecture: none

 

Concepts of Programming Languages (17): Core: Fundamental programming constructs, Basic syntax and semantics, variables, types, expressions, and assignment, simple I/O (including files), conditional and iterative control structures, functions and parameter passing, structured decomposition

 

Social and ethical issues (1): Core: Plagiarism, ethics of programming

 

Oral Communication (presentations)

 

none

 

Written Communications

 

Excluding tests, quizzes, commented source code

Programs – 5, each 3-4 pages

Including separate pseudocode design documents 1 page each, test plans 1 page each, testing output captures 1-2 pages, other hand work

 

Content

 

Theoretical Content: 72%

· Basic syntax and semantics of a higher-level language

· Variables, types, expressions, and assignment

· Simple I/O (including files)

· Conditional and iterative control structures

· Functions and parameter passing

· Primitive types, arrays, strings

 

Problem Analysis: 13%

· Programming Assignments - designing and implementing their own designs

 

Solution Design: 10%

· Two lectures about structured programming, assignment on designing solutions for “Rik the Robot”

 

Other - Administration, Social and Ethical Issues: 5%

· Plagiarism, professionalism, ethics of programming, quizzes

· (Exams are common hour so do not count in the 30 contact hours)

 

Student evaluation and feedback

 

On graded programs - Teaching Assistants use a detailed grading sheet created by the instructor for each program assignment, as well as giving individualized comments on the source code printouts.

 

On test papers - usually the correct answer is written on test papers when a student misses a question

 

On quizzes - correct answers to quizzes given in lecture immediately after the quiz is over

 

All scores and attendance records are displayed to the student on a personal web page regularly updated by their TA, starting before midterm and continuing until the final grade is reported.

 

Course Evaluation Questions

37. Do you feel the course has taught you to design and write good C++ programs?

38. Do you feel the course has taught you to understand and apply the fundamental structures of programming?

39. Do you feel the course has enabled you to use data structures like strings and arrays?

40. Do you feel more aware of object-oriented methods?

41. Are you aware of the professional responsibilities and ethics of a computer programmer?

42. Would you want to take another course with the same TA?

 

Possible Textbook

 

Programming in C++
Nell Dale, Chip Weems & Mark Headington; Jones & Bartlett 2001

 

C++ for Engineers and Scientists,
Gary J. Bronson, Brooks/Cole, 1999.