Syllabus
Programming Fundamentals II

Programming Fundamentals II

COSC-1337

Credit Spring 2020
01/21/2020 - 05/17/2020

Course Information

Section 007
Lecture
TTh 17:40 - 19:00
RRC2 2220.00
Arturo Gonzalez

Section 007
Laboratory
TTh 19:00 - 19:25
RRC2 2220.00
Arturo Gonzalez

Office Hours

  • M W
    5:00pm - 5:30
    Highland Campus 1431
  • T Th
    5:00pm - 5:30pm
    Round Rock Campus 2210

Student Learning Outcomes/Learning Objectives

Course Objectives/Learning Outcomes:

1.    Demonstrate a thorough understanding of modular programming by designing programs that require the use of programmer-defined functions.

2.    Demonstrate a thorough understanding of arrays by designing and implementing programs that search and sort arrays.

3.    Demonstrate a thorough understanding of the object-oriented programming concepts of encapsulation, data abstraction and composition by designing and implementing classes including the use of overloaded functions and constructors.

4.    Demonstrate a thorough understanding of the concept of pointers and dynamic memory allocation by designing and implementing programs using pointers and dynamic memory allocation.

5.    Demonstrate a thorough understanding of the implementation of programmer-defined functions and classes by writing code, performing unit testing and debugging of multiple complex programs.                                                                

6.    Demonstrate good documentation style in all of the programs written in this course.

7.    Demonstrate proficiency in implementing data validation code, performing unit testing, and developing test plans while implementing robust solutions to the assignments in this course.

8.    Demonstrate a thorough understanding of stream input/output for both console and files.

9.    Demonstrate an understanding of the differences between C and C++ in the areas of strings, pass by reference/passing pointers, and structs by designing and implementing programs that use C strings, C++ strings, C language structs and classes.

Programming Competencies

  1. Develop programs using procedural and object-oriented programming concepts.
    1. Design, code and test programs that use input, output and arithmetic operations.
    2. Design, code and test programs that use branching and looping control structures.
    3. Design, code and test modular programs that contain multiple functions.
    4. Design, code and test programs that contain programmer-defined data types (classes).
  2. Develop programs using C structs, classes and arrays.
    1. Design, code and test programs that use arrays and structures (arrays of structures).
    2. Design, code and test programs that use two-dimensional arrays.
    3. Design, code and test programs that use arrays and sequential search.
  3. Develop programs using pointers, dynamic memory allocation, files and strings.
    1. Design, code and test programs that use pointers, dynamically-allocated arrays and sorting.
    2. Design, code and test programs that use C++ string

SCANS (Secretary’s Commission on Achieving Necessary Skills):

Refer to http://www.austincc.edu/cit/courses/scans.pdf for a complete definition and explanation of SCANS.  The following list summarizes the SCANS competencies addressed in this particular course:

 

RESOURCES

1.1 Manages Time

INTERPERSONAL

2.1 Participates as a member of a team

2.6 Works with Cultural Diversity

INFORMATION

3.1 Acquires and Evaluates Information

3.2 Organizes and Maintains Information

3.3 Uses Computers to Process Information

SYSTEMS

4.1 Understands Systems

4.2 Monitor and Corrects Performance

4.3 Improve and Designs Systems

TECHNOLOGY

5.1 Selects Technology

5.2 Applies Technology to Task

5.3 Maintains and Troubleshoots Technology

 

BASIC SKILLS

6.1 Reading

6.2 Writing

6.3 Arithmetic

6.4 Mathematics

6.5 Listening

THINKING SKILLS

7.2 Decision Making

7.3 Problem Solving

7.4 Mental Visualization

7.5 Knowing How to Learn

7.6 Reasoning

PERSONAL SKILLS

8.1 Responsibility

8.2 Self-Esteem

8.3 Sociability

8.4 Self-Management

8.5 Integrity/Honesty

 

Readings

Textbook:

Starting out with C++: Early Objects (10th edition). Gaddis, Walters, Muganda, Pearson, 2020. (ISBN 9780135235003).

Concise C++ Beginner Tutorial 

https://www.programiz.com/cpp-programming

Other Resources

Free Fundamentals of C++ book: https://ia600701.us.archive.org/34/items/2018FundamentalsOfCppProgramming/2018_fundamentals-of-cpp-programming.pdf

C++ for Python Programmers: https://runestone.academy/runestone/books/published/cpp4python/index.html

C++ University of Cambridge: http://www-h.eng.cam.ac.uk/help/tpl/languages/C++.html
 


 

Course Requirements

Course Description:  Review of control structures and data types with emphasis on structured data types. Applies the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design. Includes basic analysis of algorithms, searching and sorting techniques, and an introduction to software engineering.

This course is an introduction to the C++ programming language and its subset, the C programming language.  Program structure, block, storage types, console and file I/O, functions, arrays, strings, pointers, call-by-reference, call-by-value, and dynamic memory allocation will be discussed.  The concept and use of classes will be covered in some detail.  The differences between C++ and C will also be discussed. 

Prerequisite:  COSC 1336 or instructional program approval. Course Type: T.

Course Rationale:  This course is designed to teach students the C++ programming language and introductory and intermediate programming concepts with examples and applications using the C++ language.  The course builds and extends topics covered in the prerequisite course, COSC 1336 and prepares students for more advanced programming courses such as ITSE 2331 (Advanced C++ Programming) as well as for entry level programming employment.  The course is required for an Associate Degree in several Computer Information Systems and Computer Science degree areas.
 

Grade Policy
Grade will be assigned based both on concepts and practical application. Exams, quizzes, class assignments, and  homework assignments will be part of this class grade. An overall grade will be assigned based on the following:
 
Grading Method     Grading Scale  
Class Assignments    20%   90% - 100% = A
Homework Assignments    30%   80% - 89% = B
Quizzes   10%   70% - 79% = C
Exams (2)   40%   60% - 69% = D
TOTAL 100%   0  % - 59% = F
 
Blackboard
All quizzes, exams, and assignments will be given and submitted through Blackboard. They are typically graded within one week after the assignment due date. Grades are recorded in Blackboard and may be accessed via the My Grades link.

Exams, Assignments, and Quizzes

Class assignments must be completed during corresponding class time.

Homework Assignments need to be submitted by the specified due-date as listed in Course Information/Schedule section in Blackboard and also provided in each assignment instructions. If you miss the due date, you will be running behind schedule and may have trouble completing the course. 
 
Weekly quizzes will be given to assess student's understanding of the required readings and will consist of theory and practical questions.  

There will be 2 exams given during the semester to assess student mastery of concepts and each will consist of practical programming problems.

Late Assignment and Exam Policy

Students are only allowed up to two (2) late homework assignments in this class. Late homework assignments will only be accepted up to 48 hours after its corresponding due date with a 25 points off penalty. Any late homework assignment submitted after 48 hours of scheduled due date and/or submitted after the 2 late homework assignment quote has been reached will automatically get a grade of 0 (zero).
 
There are NO makeup exams given in this course. Under exceptional circumstances (illness/family emergency) consideration may be given for a makeup exam. 
 
Any scheduling of computer time needed if using ACC CIT open computer labs is the students’ responsibility. Availability of computers is NOT an excuse for being late with any assignment.

 

Course Subjects

Week Week of Reading Topics Schedule Assignments   Course Objective
Week 1   2.1-2.8, 2.10-2.17, and
6.2-6.7
Intro: 
Types, Variables,   Objects(string), Functions and Unit Testing
Class Exercise 1
Homework 1
Quiz 1
 
1,5,6,7 & 8
Week 2   3.1,3.8(strings), 4.1-4.4, 4.6, 4.7, 5.12, 12.5, 13.1-13.3 Decision Structures,
Input/output streams,  char and strings, and functions
 
Class Exercise 2
Homework 2
Quiz 2 
 
1,5,6,7 & 8
Week 3     Decision Structures(continued)
 
 
Class Exercise 3
Homework  3
Quiz 3  1,5,6,7 & 8
Week 4   5.1,5.2,5.7,5.8,10.1
 
Loops, References, functions  Class Exercise 4
Homework 4
Quiz 4
 
1,5,6,7 & 8
Week 5  

8.12, 17.3

Vectors  Class Exercise 5
Homework  5
Quiz 5
 
1,3,5,6,7 & 8
Week 6    7.1-7.5,7.11, 7.6,7.10,11.6 Object-oriented programming: Classes,Constructor, Composition Class Exercise 6
Homework 6
Quiz 6
 
1,3,5,6,7 & 8
Week 7   10.13,11.10,11.11,
11.12,11.14
Object-oriented Programming: Operator overloading, 
Inheritance, Member function override
 
Class Exercise 7
Homework 7
Quiz 7
 
1,3,4,5,6,7&8
Week 8   15.1-15.4
 

 Midterm Exam 
Object-oriented programming: Polymorphism

 
 
 
  1,3,5,6,7 & 8
  3/16   Spring Break      
Week 9 3/23   Spring Break      
Week 10     Regroup-
Syllabus,
Distance Learning 


Object-oriented Review

Object-oriented Polymorphism, Smart Pointers
     
Week 11     Object-oriented programming: 
Virtual Functions, and Abstract classes

File input/output
Class Exercise 8
Homework  8
Quiz 8 1,3,5,6 & 8
Week 12   10.1-10.2,10.4,10.5 Memory Management: References and Pointers Class Exercise 9
Homework 9
Quiz 9 1,3,4,5,6,7 & 8
Week 13   10.7,10.9,10.10 Memory Management:
Pointers, Arrays, Destructor
Class Exericse 10
Homework 10
Quiz 10 1,3,4,5,6,7 & 8
Week 14   10.11 Memory Management:(pointers),Templates,
Char arrays
Class Exercise 11
Homework 11
Quiz 11 1,3,4,5,6,7 & 8
Week 15   10.3 Recursion

Final Exam 
    1,2,3,4,5,6,7 & 8
 
*This course schedule is intended to give the student guidance in what may be covered during the semester and will be followed as closely as possible. However, the professor reserves the right to modify, supplement and make changes as the course needs arise. Students will be notified of any changes via ACC email system and Blackboard announcements.