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