Computer Science 121

Computer Science I: Programming in C++

Spring Semester 2018

Instructor: Dr. Rick Coleman, former Senior Software Engineer, SAIC Inc. Now retired.
CS 221 Web Page:
Office: N345, Technology Hall
Office Hours: By appointment

Course Catalog Description:

Review of hardware and software components of computer systems. Review of problem solving techniques and algorithm development. Principles of software design, implementation, and testing. Introduction to object oriented design and the C++ programming language. Extensive programming assignments to provide experience in the application of design and implementation principles. Prerequisites: CS 102 or other college-level programming course, MA 112 (Precalculus Algebra). Prerequisite with concurrency: MA 113 (Precalculus Trigonometry).

Textbook: This text is recommended but not required.
  • Programming and Problem Solving with C++ (Brief Edition),, Dale, Nell and Chip Weems,. Jones and Bartlet Publishers.
    If you can find an earlier edition at less cost please get it.

Course Objectives:

      When you have completed this course you should:
  • Have an understanding of what programming is and some techniques for planning and designing computer programs to solve problems.
  • Have a thorough knowledge of C++ syntax including but not limited to C++ data types, mathematical operators, conditional and logical statements, looping, and stream I/O.
  • Have a thorough knowledge of arrays, functions, and parameters passed to functions.
  • Have been exposed to functional versus object-oriented development techniques and unit testing techniques.
  • Be familiar with software design principles including proper use of internal program documentation.
  • Have experience planning, designing, and implementing programs in the C++ language using current development tools such as the Visual C++ development environment.
  • Be able to design, implement, and test a computer program to meet defined requirements.

Programming Assignments:
  • There will be 4 programming assignments each designed to provide experience in the topics being covered in class. Details of these assignments will be posted on the web site and discussed in class. One of these will be done mostly during class time under the direction of the instructor.
  • All programming assignments should be handed in on time, as specified in the course schedule.
  • The programming assignments are worth a varying number of points based on the difficulty of the assignment. Program 1 will be worth 10 points, Program 2 will be worth 20 points, Program 3 will be worth 30 points and Program 4 will be worth 40 points for a total of 100 points, the equivalent of one test.
  • A grace period beyond the due date for each programming assignment has been posted in the course schedule below. Programming assignments may be turned in without penalty up to that date. Programming assignments will NOT be accepted after that date (referred to as the DDD, Drop Dead Date).
  • All programming assignments turned in must be your own work Ė do not copy someone else's work or work together with another student! Copying someone else's work will result in a grade of zero on that assignment for both you and the person you copied from. This could result in you being removed from the class and reported to the Dean for cheating. Don't risk it.
  • Programs are due at the beginning of class on the posted due date! It's up to you to see that your program is ready on time, "my computer crashed" or "my disk is corrupted" are not acceptable excuses.
  • Your program must run under MS Visual Studio 2010 or 2012. The software is available in the Computer Science laboratories or you can find out how to download a copy for use on your home computer. Click here to learn how to download.
  • Programming assignments always take longer than you expect. Be sure to start early! The joke among professional programmers is that when someone tells you how long it will take to complete a project take their estimated time, multiply by two and increase to the next time unit, e.g. if told "one day", expect the project to be finished in "two weeks".

In-class Programming Activities:
  • There will be a number of in-class programming exercises to provide hands on experience with the current topic. You are strongly encouraged to bring your laptop to class so you can use it for the in-class projects. See the link above for instructions on how you can get a FREE copy of the Microsoft Visual Studio compiler to install on your own laptop.
  • Each in-class exercise must be turned in, via e-mail or copying to the K-drive, prior to the next class meeting after the exercise is assigned in class. Note that the received time on e-mails will determine if an exercise is received on time, not the time you sent it. All exercises submitted on the K-drive will be copied by the instructor up to about 15 to 30 minutes prior to the next class. If your exercise is not received before that time it will not be accepted.


Here are some resources in case you need outside assistance: the class Teaching Assistant on duty in the lab (N329), the Computer Science Department Help Desk, or the instructor. Even your classmates can help in a limited way.

Acceptable help from classmates:
  • Discussing in general terms the concepts involved in an assignment to be sure you understand.
  • Asking questions about language syntax, or program error messages
  • Getting help with specific program bugs (NOT "My program won't run; please find the error").
Unacceptable help:
  • Getting someone else to write all or part of your program
  • Copying all or part of someone else's program, or copying a program from a textbook or the Internet
  • Working so closely with someone else that the instructor can tell that your programs are similar or identical, and for someone with his experience this is surprisingly easy to do.
ACADEMIC INTEGRITY (Statement of the UAH Policy):

Unless otherwise specified, all assignments submitted for grading must be totally your own work.
Violation of this policy will be punished by at least a grade of zero on the assignment. This applies to programs, homework, quizzes or tests. Flagrant or repeated violations of the academic integrity policy will be reported to the University Judicial Committee for further action. A person who allows his or her work to be copied is as guilty as the person who does the copying. It is your responsibility to protect your programs, in particular. If someone submits a copy of your program, you will both be held equally responsible.

Final Grade:
Tests(3) 100 pts each 300
Class attendance and participation 50 pts 50
Programming assignments(4) 10, 20, 30, 40 pts 100
Final Exam 200 pts 200
  TOTAL 650
Note on WX grade:
The administration of UAH has established a grade of WX or faculty initiated student withdrawal. Basically, this allows the instructor to withdraw a student from class without any request from the student. It's primary purpose is to allow a faculty member to remove a student from class who is not attending class or putting forth any effort to complete the class work. This grade will not be used to avoid a grade of F for the course.

UAlert Emergency Notification System:
UAHuntsville has implemented the UAlert emergency notification system. UAlert allows you to receive time-sensitive emergency messages in the form of e-mail, voice mail, and text messages.

Everyone who has a UAHuntsville e-mail address will receive emergency alerts to their campus e-mail address. In order to also receive text and voice message alerts, you are asked to provide up-to-date phone contact information. Participation in UAlert text and voice messaging is optional, but enrollment is strongly encouraged. You canít be reached through UAlert unless you participate. The information you supply is considered confidential and will not be shared or used for purposes other than emergency notification.

To review your UAlert account, add or update phone and alternate e-mail addresses, and set the priority for your contact methods, please visit the UAlert web site:

Topical Outline and Reading Assignments
This Schedule is Subject to Change
  Date* Topic Assignment Due**
1 Tuesday
January 9
   1. Course overview and requirements.
   2. Overview of the CS 121 web page.
   3. Apply for CS computer account.
2 Thursday
January 11
What is Computer Science?
   1. Overview of Computer Science
   2. Major areas of Computer Science
   3. Ten fastest growing careers in CS
   4. Finding that perfect CS job
Chapter 1  
3 Tuesday
January 16
The Art of Programming
   1. Parts of a computer system (Hardware)
   2. Parts of a computer system (Software)
   3. What is Programming
   4. Problem solving techniques
   5. Programming languages
   6. Origin of C++
   7. Basic Steps in Program Development
Supplemental material
from instaructor.
4 Thursday
January 18
A Brief History of Computers
   From notched sticks to super computers.
Supplemental material
from instaructor.
5 Tuesday
January 23
Program Assignment 4, Phase 0:
Introduction & Design Plan

Programming assignment 4 will be worked on
in class and out. It will take all semester to complete.

Using the Visual C++ Compiler
   1. What is Visual C++
   2. Creating a project
   3. Adding files to a project
   4. The traditional "Hello World" program
   5. Compiling and running
Supplemental material
from instaructor.
6 Thursday
January 25
Program Elements
   1. Basic program structure
   2. Elements of C++
   3. Identifiers, Data Types, and C++ variables
   4. String data type
   5. Garbage Out with cout
   6. Comments and Constants
Program Assignment 4: Phase 1
Chapter 2 and supplemental
material from instaructor.
7 Tuesday
January 30
   1. Basic structure of functions
   2. Function parameters and arguments
   3. Call by Value and Call by Reference
   3. Function declarations and definitions
   4. Local and global variables
   5. Scope
   6. Encapsulation
   7. Side effects

Program Assignment 4: Phase 2
Chapters 8, 9 Program 4-Phase 0
8 Thursday
February 1
Do the Math
   1. Arithmetic operators
   2. Other operators
   3. Simple mathematical calculations
   4. Precedence
   5. Type coercion and type casting
Chapter 3 and supplemental
material from instaructor.
Program 4, Phase 1
9 Tuesday
February 6
Do the Math
   4. Formatted output
   5. Numbering systems in CS
   6. The math library

Programming assignment 1 posted
   Discussion of programming assignment 1

Programming assignment 1
Program 4, Phase 2
DDD for Program 4, Phase 0
10 Thursday
February 8
Collaborative learning exercise
Prepare for first test

11 Tuesday
February 13

First Exam

   Covers: Chapters 1, 2, 3, 8, 9 and
   supplemental material presented
   by the instructor.
12 Thursday
February 15
Discussion of First Exam results

Program Input
   1. Input with the cin operator
   2. Input with the cin.get() function
   3. Input with the >> operator
   4. Input with the getline() function
   5. Input/output data in a file
Chapter 4 and supplemental
material from instaructor.
DDD for Program 4, Phase 1
13 Tuesday
February 20
Program Assignment 4: Phase 3

The Software Design Process
   1. Software design methodologies
   2. Functional Decomposition
   3. Object Oriented Programming
Chapter 4 and supplemental
material from instaructor.
Programming Assignment 1
14 Thursday
February 22
Conditional Statements
   1. Logical expressions
   2. Relational operators
   3. The if statement
   4. Logical operators
   5. The conditional expression
   6. The switch statement

Program Assignment 4: Phase 4
Chapter 5 and supplemental
material from instaructor.
DDD for Program 4 Phase 2
15 Tuesday
February 27
   1. The while loop
   2. The do-while loop
   3. The for loop
   4. Loop programming examples
   5. The break statement
   6. The continue statement
Program Assignment 4: Phase 5

Programming assignment 2 posted

Programming assignment 2

Chapters 6, and 7 and supplemental
material from instaructor.
DDD for Prog. Assignment 1
Program 4, Phase 3
16 Thursday
March 1
Collaborative learning exercise
Prepare for second test

  Program 4 phase 4
17 Tuesday
March 6

Second Exam

   Covers: Chapters 4, 5, 6, 7, and
   supplemental material presented
   by the instructor.
  Program 4 phase 5
DDD for Program 4 Phase 3
18 Thursday
March 8
Discussion of second exam results

Additional control structures
   More C++ operators

Program Assignment 4: Phase 6

Chapter 7 and supplemental material from instructor.
Programming Assignment 2
DDD for Program 4 Phase 4
19 Tuesday
March 13
Enumerated Data Types and Arrays
   1. Enumerated Data Types

   1. One-dimensional arrays
   2. Two-dimensional arrays
   3. Processing arrays
   4. Sorting and Searching arrays

Program Assignment 4: Phase 7
Programming assignment 3 posted
Programming assignment 3

Chapter 10.1-10.2, Chapter 11 and
supplemental material from instructor.
DDD for Program 4 Phase 5
20 Thursday
March 15
Strings Revisited
   1. Special functions in the string object
   2. Kernighan and Ritchie strings from C

    DDD for Program 2
21 Tuesday
March 20
Collaborative learning exercise
Prepare for third test

  Program 4, Phase 6
22 Thursday
March 22

Third Exam

   Covers: Chapters 8, 9, 10, 11, and
   supplemental material presented
   by the instructor.
-- Tuesday
March 27
Spring Break    
-- Thursday
March 29
Spring Break    
23 Tuesday
April 3
Discussion of third exam results

Introduction to Pointers
   1. Creating pointers
   2. Using pointers
   3. Pointers and functions

Program Assignment 4: Phase 8
Supplemental material
from instructor
Program 4, Phase 7
DDD for Program 4, Phase 6
24 Thursday
April 5
Introduction to Structures and Classes
   1. Records as structured data types
   2. Structures
   3. Classes
   4. Unions
Introduction to Object Oriented Programming

Supplemental material
from instructor
Programming Assignment 3
DDD for Program 4, Phase 7
-- Tuesday
April 10
Honors Day: No class
25 Thursday
April 12
File I/O Part 1

  Program 4 Phase 8
DDD for Program 3
26 Tuesday
April 17
File I/O Part 2

27 Thursday
April 19
Expanding Programming Assignment 4
   Suggestions for adding new and expanded
   features to program 4. (May not be
   included in the program turned in
   for credit.

28 Tuesday
April 24
Last Day of Class
   Where do we go from here?
  DDD for Prog 4, Phase 8
  Thursday, April 26
11:30 - 2:00
Final Exam
Final exam will be comprehensive