Syllabus Computer Science I
Introduction and Goals
======================
This course is an introduction to the topic of computer science.
The goals for this course are as as follows:
- Gain proficiency with the algorithms
- Gain proficiency with the C++ programming language
- Introduce software development and computer science skills
The main thing I want to convey in this class is how to think about
computer science. This is not just a course in computer
programming, this is intended to be a foundation for the exploration
of a very vast and rewarding field!
Content Outline
===============
1. Introduction to CS and Computing
1.1 Definition of Computer Science
1.2 Pseudocode and Algorithms
1.3 Overview of Programming Languages
1.4 The UNIX command line environment
2. Introduction to C++
2.1 Basic Program Structure
2.2 The C++ Compilation Process
2.3 Variable Types
2.4 Operators
3. C++ Basics
3.1 Invoking Functions
3.2 Best Practices
3.3 Block Structure
3.4 Introduction to Flow Control
4. Flow Control
4.1 Definition of Truth
4.2 Branching with If
4.3 Branching with Switch
4.4 Designing Algorithms With Branches
4.5 Introducing Repetition Structures
5. Flow Control
5.1 Loop Basics
5.2 Precondition Loops
5.3 Post Condition Loops
5.4 Loop Control Strategies
5.5 Designing Algorithms with Loops
5.6 Introduction to Runtime Analysis
5.7 GOTO: A privilege, not a right
6. Building Abstractions
6.1 Procedure Oriented Thinking
6.2 Modular Decomposition
6.3 Designing With Procedures
6.4 Function Syntax
7. Functions
7.1 Using Functions in C++
7.2 Recursive Functions
7.3 Recursive Problem Solving
7.4 Evaluating Recursive Runtime
8. Functions & File I/O
8.1 Finishing up Functions
8.2 Introduction to Objects
8.3 Streams as Objects
8.4 Interacting with Files
9. Arrays
9.1 Memory and Addressing
9.2 Single Dimensional Arrays
9.3 Multiple Dimensional Arrays
9.4 Memory Organization of Arrays
10. Arrays, Pointers, and Strings
10.1 Arrays and Pointers
10.2 Array Sorting
10.3 C Strings
10.4 C++ String Objects
11. Pointers, Structures, and Classes
11.1 Advanced Pointer-Fu
11.2 Using Structures
11.3 Designing Classes
11.4 Pointers to Structs and Classes
12. Designing Classes
12.1 Introduction to Object Orient Analysis and Design
12.2 Pseudocode and Classes
12.3 Best Practices in Class Design
12.4 Examples in OOP
13. Dynamic Memory & Introduction to Data Structures
13.1 Allocating and Deallocating Memory
13.2 Dynamic Allocation and Arrays
13.3 Correct Dynamic Allocation of Multidimensional Arrays
13.4 An Inefficient Dynamically Resizeable Array
14. Data Structures & Some Advanced Language Features
14.1 Linked Lists
14.2 ListNode Class
14.3 List Container Class
14.4 Introduction to Templates
14.5 Exception Handling
15. Final Exam
Copyright (C) 2013 Robert Lowe
This work is distributed under a Creative Commons
Attribution-ShareAlike 3.0 Unported License (CC BY-SA 3.0)
For more information, see
http://creativecommons.org