CIS-255 Home: http://www.c-jump.com/bcc/c255c/c255syllabus.html
- Welcome! (press F5 to refresh and get the latest version)
- CIS-255 Online -- submit your homework here
- CIS-255 Youtube Lectures
- 2018 Samples. See also 2014 Samples, 2013 Samples, and 2012 Samples.
- ________________________________________________________
- Posted Aug 23 :
- Please be sure to read carefully and understand
course policies and formats outlined in CIS-255 syllabus .
Title: Programming Principles and Practice Using C++
by Bjarne Stroustrup
Publisher: Addison-Wesley
Edition: 1st
ISBN-13: 978-0321543721
Book's online resources: stroustrup.com
The textbooks are available in the bookstore.
Reading:
BCC Student Handbook Tip: "For each hour in class, you should expect to study at least 2-3 hours outside of class. Know your limits, avoid over scheduling yourself (whether it be work or class). Set up a schedule that you know will allow you to earn good grades. And, maintain a day planner to help you stay organized."
Textbook Chapter 2, Hello, World!
Textbook Chapter 8.3, Header files
Textbook Chapter 17.3, Memory, addresses, and pointers
Textbook Chapter 17.4, Free store and pointers
Handout: C++ Memory Access ( presentation )
Handout: C++ Pointers ( presentation )
Handout: C++ pointer arithmetic
Handout: strlen, strcpy, strcmp
Lab 1: FLTK Library and Visual Studio C++ Project Configuration
project configuration walkthrough
release and debug builds; compiler and linker settings; output directories
console and a plain window builds; debugging and testing
Homework Assignment:
Install and configure FLTK library on your home machine
Configure and test Lab 1 project on your home machine
Watch youtube videos on this playlist:
Reading:
Textbook Chapter 8, Technicalities: Functions, etc.
codeproject.com A Beginner's Guide to Pointers article
Handout: Classes and OOP concepts ( presentation )
Handout: Bits, Bytes, Hexadecimals, and ASCII ( presentation )
"Paper pointer" game for in-class exercise: memory.txt
Lab 2: FLUID GUI designer and FLTK Widgets
making a copy of an existing project
Using FLUID GUI designer, saving FLUID project, code generation for a simple window
operator new, pointers, pointers to objects, pointer-to-member -> operator
FLTK widgets
Homework Assignment:
Week 1 and 2 reading
Watch youtube videos on this playlist: Win32 GUI Project using FLTK and FLUID
Reading:
Textbook Chapter 9, Technicalities: Classes, etc.
Handout: Encapsulation ( presentation )
Encapsulation, struct, access specifiers, scope management, function overloading, and friends.
Lab 3: FLUID Window Class
C++ class, public and private access specifiers
class constructor
class inheritance
code generated by FLUID: the content of .H and .CXX files
syntax elements:
class CFluidWindow CFluidWindow::CFluidWindow() class CDemoWindow : public CFluidWindow public: void show() // what it does, how does it get called from main()
Homework Assignment:
Watch youtube videos on this playlist:
Quiz: C++ Memory Access
Reading:
Textbook Chapter 9, Technicalities: Classes, etc.
Textbook Chapter 8.5, Function call and return
Lab 3a: Window closing callback
static class members: functions and variables
Lab 3b: Fl_Input, Fl_Output, Fl_Button
The this pointer
Reading:
Textbook Chapter 8.3, Header files
Handout: C++ object lifecycle ( presentation )
constructors, default constructors, destructors, references, copy constructors
Lab 4: Window class header and implementation file
C++ project organization: .H .CPP .CXX .OBJ .LIB .EXE .DLL
std::stringstream and double-to-text conversions
Homework Assignment:
Watch youtube videos on this playlist:
Reading:
Textbook Chapter 9.7 Class interfaces
Lab 5: Multi-line text, Fl_Text_Editor, and Fl_Text_Buffer
C++ class constructors and destructor
Reading:
Handout: Initializer lists and const qualifiers ( presentation )
Online article Dynamic Memory from cplusplus.com
Lab 6: Fl_Box, Fl_Image, Fl_JPEG_Image
Usage of Fl_Box, Fl_Image, and Fl_JPEG_Image
Resizing the image to fit the Fl_Box
Lab 7: Fl_File_Chooser
Using dynamic memory
Memory cleanup
new and delete
Using WinMerge to compare two files
Lab 8: Fl_Native_File_Chooser
Homework Assignment:
Watch videos:
Reading:
Textbook Chapter 17, Vector and Free Store
Textbook Chapter 19.3, Templates
Handout: C++ Templates ( presentation )
C++ template classes and functions
Lab 9: Fl_Box and custom drawing
Custom drawing - where and when
Drawing API: 2D and 3D, Cartesian coordinate system, and transformations (math!)
Lab 10: CPrimitiveLine and mouse events
std::vector and C++ STL Animated Tutotial cjumpstl.exe
CDrawBox::handle()
Widget borders and clipping
Homework Assignment:
Reading:
Handout: STL Part I, Containers ( presentation )
Textbook: refer to the textbook index to find related information
Lab 12: Radio buttons
Lab 13: Check box widget
Widget activate() and deactivate()
Homework Assignment:
Reading:
Handout: STL Part II, Associative containers, iterators, and algorithms ( presentation )
Textbook: refer to the textbook index to find related information
Lab 14: CDrawBox merged with radio buttons and check box
Using WinMerge to compare folders
Reading:
Textbook Chapter 14, Graphics Class Design
Handout: Class Inheritance and Object-Oriented Design ( presentation )
Lab 15: Scratch Pad App
Hierarchy of classes
Pointers to CPrimitiveBase
Pure virtual functions
Resource Acquisition Is Initialization (RAII) idiom (wikipedia.org)
std::unique_ptr
FLTK drawing functions
Homework Assignment:
Watch videos: Week 13 Class Inheritance and Polymorphism
Lab 15 source code documentation
Reading:
Textbook Chapter 23, Text Manipulation
Handout: std::string ( presentation )
See also:
std::string reference by cplusplus.com
Case-insensitive string example: icstring.zip
Lab 16: CDrawBox header and implementation file
Refactoring (restructuring) the source code
Lab 20: FLTK Menu classes
Menu bar, menus, and menu items
Menu callbacks
std::string
Homework Assignment:
Watch videos: Week 09 std::string
Reading:
Textbook Chapter 9.6, Operator overloading
Textbook Chapter 18, Vectors and Arrays
Handout: Operator Overloading ( presentation )
Operator overloading, conversion constructors, conversion operators
Lab 21: Scratch Pad with load and save functionality
Overloaded operator <<
Saving and loading a string from a file
Lab 30: Fl_Progress bar and Timer events (Part I)
Thread of execution, UI thread, worker thread
System timer and timer events
Lab 31: Fl_Progress bar and Timer events (Part II)
Progress bar animation
Homework Assignment:
Reading:
Textbook Chapter 19, Vectors and Arrays
Handout: Linked Data Structures ( presentation )
Sample code: singly_linked_list.cpp
Discussion:
Using lists in games and simulations. "Bugs and worms" example. A "worm" is a series of nodes in a list. While moving, the nead tells the tail where to go on each move. The keyboard moves the head, the rest of the worm's body (list nodes) know where to move themselves.
Homework Assignment:
Watch videos: C++ linked data structures
Homework Project 6 is due
Project review sessions
Handouts:
Textbook Chapter 8.7, Namespaces. Handout:
C++ Namespaces
(
presentation
)
Textbook Chapter 5.6, Exceptions. Handout:
C++ Exceptions
(
presentation
)
See also:
exceptions tutorial
from cplusplus.com
Object-oriented Design Patterns, Part I
(
presentation
)
Object-oriented Design Patterns, Part II
(
presentation
)
C++ Arrays and Standard Library Algorithms
(
presentation
)
Floating Point Primitive Types
C++ Floating-Point Numbers
Object Oriented Programming in C++
Tutorials:
cplusplus.com
C++ STL Animated Tutotial:
cjumpstl.exe
freeprogrammingresources.com
programmingtutorials.com
C++ Made Easy
Reference:
cplusplus.com
POSIX Reference from IEEE Open Group Base Specification
Syntax:
C++ quick reference
Note: This syllabus is a suggested course outline and will be generally followed, subject to change according to the instructor's discretion and needs. Academic flexibility is important.