CS 115 - Introduction to Computer Programming

 

Credits: 3

 

Course Description

 

This course teaches introductory skills in computer programming using an object-oriented computer programming language. There is an emphasis on both the principles and practice of computer programming. Covers principles of problem solving by computer and requires completion of a number of programming assignments.

 

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, using the principles of structured programming

2. Use simple data structures: strings and arrays

3. Implement and analyze some sorting and searching algorithms

4. Use objects of predefined class types: filestreams, strings

5. Identify and discuss professional responsibilities and ethical concerns of programmers

 

Measures

 

These outcomes will be measured by the grading of: quizzes, programs, lab reports and exams that contain problems specifically addressing them.

Additional measurements include results of the self-assessment of the outcomes completed by the students as part of the course and teacher evaluation at the end of the semester.

 

Additional Comments

 

The two primary components for accomplishing this are lecture/demonstration sessions coupled with frequent programming assignments that must be completed using the computer. Lectures are designed to integrate the principles of program design and problem solving skills with an introductory study and demonstration of software tools that are essential to the programmer.

 

Choice of the Language

 

Any modern, structured, object-oriented programming language that is a suitable vehicle to teach problem solving, solution design, and programming engineering can be used in this class. However, the same programming language ought to be used in the sequence CS-115, CS-215, and CS-216.

 

CAC Categories and Coverage:

 

Topic

Core

Advanced

Math Fundamentals

0

0

Data Structures

11

0

Algorithms & Software Design

9

0

Computer Organization and Architecture

0

0

Concepts of Programming Languages

21

0

Social and ethical issues

1

0

Total

42

0

 

Data Structures (11): Core: Primitive types, strings, arrays

 

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

 

Concepts of Programming Languages (21): 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, professionalism, ethics of programming, history of computing

 

Oral Communication (Presentations)

 

none

 

Written Communications

 

These page counts exclude 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

Lab Reports -- 5 – 6, each 7-12 pages - paragraphs answer questions about experiments (1-2 pages)

Design Labs – 3 – one page each - writing pseudocode designs and participating in design process

 

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%

· Design Labs – participating in designing the solution to a problem lead by a TA

· Programming Assignments and Lab 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, exams, quizzes, lab tests

 

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.

 

During lab sessions - most lab assignments include one program to be "demonstrated" at which time the TA observes the program running, but also examines the code written by the student. The TA gives appropriate verbal feedback, suggesting corrections or improvements which the student has incentive to implement because they are also graded on the problem on paper.

 

On lab assignments - lab reports have detailed grading sheets prepared by the instructor that TAs use, and individual comments are written on lab assignment 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?

43. Do you feel this course has prepared you adequately for CS 215?

 

Possible Textbooks

 

Problem Solving with C++, The Object of Programming

Walter Savitch

 

Programming and Problem Solving in C++

Dale, Weems, and Headington

 

C++ Programming: Program Design Including Data Structures

D.S. Malik