Syllabus
Programming Fundamentals II

Programming Fundamentals II

COSC-1337

Credit Spring 2021
01/19/2021 - 05/16/2021

Course Information

Section 007
Distance Learning
TTh 17:40 - 19:00
DLS DIL
Arturo Gonzalez

Section 007
Laboratory
TTh 19:00 - 19:25
DLS DIL
Arturo Gonzalez

Section 011
Distance Learning
MW 17:30 - 18:50
DLS DIL
Arturo Gonzalez

Section 011
Laboratory
MW 18:50 - 19:15
DLS DIL
Arturo Gonzalez

Office Hours

  • M T W Th
    5:00pm - 5:30pm
    Virtual Office Hour: Google Meet
    Copy and paste link below to your Internet browser:
    https://meet.google.com/wmw-qxrr-exg
    Telephone:
    669-220-6378‬ PIN: ‪563 448 076‬#

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).
 


 

Course Requirements

Instruction Methodology: Class will meet virtually on Google Meet per class schedule.  Virtual office hours will be via Google Meet.

Blackboard

Links to the virtual classroom and office hours will be posted on the Blackboard main course menu.


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.
 

Grading Method     Grading Scale  
Class Assignments    10%   90% - 100% = A
Homework Assignments    20%   80% - 89% = B
Quizzes   30%   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 button.

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 Topic-Updated Schedule Assignment  
Week 1 1/18 2.1- 2.10-2.17, and
6.2, 6.4, 6.6

Syllabus Review
C++ Dev Tools 
Intro to C++ Types, Functions, and Testing 
 
Class Exercise 0
 

 
Week 2 1/25 3.1,3.8(strings), , 5.12, 12.5, 13.1-13.3
Input/output streams, file input/output, char and strings
 
 
Class Exercise 1
Homework 1
Quiz 1 
 
Week 3 2/01 4.1-4.4, 4.6, 4.7 Decision Structures
 
Class Exercise 2
Homework  2
Quiz 2 
Week 4 2/08 5.1,5.2, 5.7, 5.8, 
10.1
6.1-6.14

Iteration
References 
Functions

 
Class Exercise 3
Homework 3
Quiz 3
 
Week 5 2/15

 8.12
7.1-7.3
 


Vectors
Intro to Object-oriented programming

 
Class Exercise 4
Homework  4
Quiz 4
 
Week 6 2/22 7.4-7.10
 

Object-oriented programming: Classes,Constructor, Composition
 
Class Exercise 5
Homework 5
Quiz 5
 
Week 7 3/01 7.10-7.13
11.1-11.4

Object-oriented Programming:
Static members, friends, 
Operator overloading
 
 
Class Exercise 6
Homework 6
Quiz 6
 
Week 8 3/08
11.11, 11.12

3/12 Midterm Due

Object-oriented programming: Inheritance
 
 
 
 
  3/15 Spring Break Spring Break Spring Break Spring Break
Week 9 3/22 10.13
15.1-15.4

Object-oriented programming: 
Smart Pointers, Virtual Functions, and Abstract classes
 
Class Exercise 7
Homework  7
Quiz 7
 
Week 10 3/29 5.12, 13.1-13.7
Abstract classes(cont)
File Input and Output

 
Class Exercise 8
Homework 8

Quiz 8

Week 11 4/05 8.1-8.13
Memory Management:
Stack Arrays 
 
Class Exercise 9
Homework 9
Quiz 9
Week 12 4/12 10.1, 10.2, 10.4-10.7,10.9, 10.10
Memory Management:
References and pointers,
 
Dynamic memory simple types
 
Class Exercise 10
Homework 10
Quiz 10
Week 13 4/19 10.1-10.8
Memory Management:
Dynamic arrays

 
Class Exericse 11
Homework 11
Quiz 11
Week 14 04/26 11.4,11.5, 11.7, 11.7
Memory Management:Class memory mgmt destructor
 
Class Exercise 12
Homework 12
Quiz 12
Week 15 05/03 8.1-8.11, 8.13
Class memory mgmt,
Intro to Algorithm Analysis/
Recursion

 
Class Exercise 13 Quiz 13
Week 16 05/10 16.2, 16.3, Reference Material Templates and Recursion

Object-oriented Programming:
Graphics (wxWidgets)

Final Exam
Final Exam   
 
*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.