| Date |
Reading |
Comments |
| January 18 |
- Make sure you read the syllabus and come in with questions
- Pages xix - xxi in the Preface to the text.
(Consider reading the rest of the Preface and the "Rationale".)
- Sections 1.1 - 1.8 in the text.
|
As the syllabus says, you are responsible for making sure you understand the material on C++ and Qt. Hopefully, the installation of Qt has already been done so you can simply read through that material quickly.
Do make sure you read the code examples carefully. If they don't make sense, try running them. The book does some funny things - like using the while loop in the first program but then saying it will discuss "iteration structures" in chapter 21. Luckily, the while and for loops have the same syntax in both C++ and Java. You may not have seen the "do...while" loop before (Example 1.3, page 13) but it simply has the test at the end so the loop is guaranteed to execute at least once. For more help, check out Section VII of the "Essentials of C++". |
January 19 |
- Review the instructions for downloading the source code files
- Review examples 1.4 and 1.5 (pages 17 and 18)
- Read (but do not work on) exercises 1, 2, and 3 on page 29
|
We will play with these examples and exercises in the lab |
| January 23 |
- The first four sections of the Wikipedia description of Use Cases
- Sections 1.9 through 1.12.1 in the text
-
Sections 1 and 2 of chapter 9 of the online text
|
The text book material is an introduction to pointers - a topic we will come back to again and again. By the way, you should check out the Table of Contents at the front of the text. One thing you will note is that Part III of the book is entitled "C++ Language Reference". You may want to check this out from time to time.
|
| January 25 |
- Section 1.12.2
-
Section 10 of the Essentials of C++
- An introduction to Patterns
- Basic Algorithm Patterns
|
As you have or will discover pointers are an explicit part of C++, unlike Java. The best way for most people to deal with pointers is through pictures. Make sure you are comfortable drawing pictures that show how pointer-based code works
Today's readings also offer an introduction to the idea of patterns. The readings discussed in the readings are of the simplest types and are not what is usually meant in books on patterns. Still, they are foundational to your skills as programmers.
|
| January 26 (Lab) |
The rest of chapter 1
|
We may well use this material in the lab so, if you want to have less homework, be prepared.
|
| January 30 |
- Object-oriented design
- A handout on the Object-oriented approach
- Sections 2.1 - 2.5
|
This begins our discussion of OOP with C++.
|
| February 1 |
- CRC cards - an Introduction
- Tutorial on CRC cards
- Class design patterns
- Sections 2.6 - 2.9
|
The text presents the basics of the syntax for C++ classes and does it in a few pages. If you feel you need more information, they are links on the assignment page and there is chapter 5 in the online text. This online chapter also about CRC cards but it does so in a slightly different way - putting the attributes (properties) in the front side of the card. Few people do this today so this is probably not the approach you should take.
The third reading offers some hints on what to look for when trying to use either a problem narrative (or other material such as use cases) when trying to create CRC cards, UML class diagrams, or simply discover the classes for a problem as well as the behaviors and properties for a class.
|
| February 2 Lab |
How to use Umbrello (a UML editor) to create class diagrams. The links below follow one after the other so you can simply click on the "next" link at the bottom of each page.
- Creating a model
- Editing a model
- Adding a diagram (for example a class diagram) to a model
- Adding an element (for example, a class element) to a diagram
|
In lab we will design some classes and you should know how to use the Umbrello UML editor for this purpose. If you try to learn this in class, you will have more homework and have wasted your time with the instructor.
You should note that in Umbrello a "model" represents a collection of "diagrams" that together try to capture in pictures important elements of a problem. At any one point in time the Umbrello "Work Area" holds one diagram in the model.
Each diagram can have a number of elements. For example, a "class" diagram may hold information about a set of related C++ classes. (This makes the name "class diagram" a bit confusing in that a class diagram is not the same thing as the UML pictorial representation for a specific class.)
|
| February 6 |
- Composition in object-oriented programming
- The rest of chapter two
- Discuss project proposals
|
The first reading does a good job of describing composition but uses Java code. You do NOT have to read/understand the code
|
| February 8 |
- Pages ix - xii of "C++ GUI Programming with Qt4
- Pages xv-xvii
- Pages 3 - 12
If you do not have the "optional book", read:
-Qt general description
-Licensing
-History
-Tutorial on "Hello World"
- Regular text: Pages 200 - 208
|
We finally get a taste (but only a taste) of GUI programming with Qt. Make sure you understand how to create some basic widgets, especially labels, and how to work with signals and slots. Or, come in with questions!
|
| February 9 |
- The Observer Pattern
-
Event Loop
- All of chapter three
|
|
| February 13 |
- A nice, simple tutorial on the basics of "make"
-
A slightly more complex make tutorial
- All of chapter three
|
|
February 15 |
- Sections 10.1 (not not 10.1.1), 10.1.2 and 10.2 (Yes, we jump forward)
- All of chapter 4
- Optional:
-Templates in the online textbook
|
In chapter three we looked at "composition" in OOP - the idea that an object could be composed of other objects as in a car is composed of an engine, four tires, etc. Chapter four discusses another relationship among objects called "aggregation". Although this term has had other meanings, it now usually means a collection of objects as in car dealership could have a collection of cars. There are many different kinds of collections with the list being the most common one - as in a list of cars.
|
| February 16 |
You should review the material on "make" as this will be part of the lab
|
|
| February 20 |
- Function design patterns
- Sections 5.1 - 5.3
|
The instructor will assume that all students are comfortable with the process of determining the parameters for functions (methods in Java). Please inform him if this is not the case with you. |
| February 22 |
Sections 5.4 - 5.6
|
|
| February 23 |
Sections 5.7 and 5.8
|
The lab will focus on functions and functional (task) decomposition
Next week, during lab, there will be a test.
|
| February 27 |
- A reading on the idea of patterns in software development
- The rest of chapter 5
|
There will be a test this week in lab. |
| March 1 |
Review for the test on chapters 1 through 5 in the text and on the other material mentioned in the expectation pages.
|
|
| March 2 |
Exam on chapters 1 through 5 in the text and on the other material mentioned in the expectation pages.
|
|
| March 6 |
- Chapter 6, Section 6.1
- Polymorphism
- Section 6.2 (Read AFTER reading the previous reading on polymorphism as the text does not do a good job.)
- Sections 6.3 and 6.4
|
Inheritance in C++ is conceptually the same as in Java. Unless you have questions, the focus of the lecture will be on polymorphism and design issues. |
| March 8 |
- The rest of Chapter 6
- Handout on Patterns
- Section 17.1, page 392 in the text
|
We now move past the simple patterns discussed so far to the more complex patterns found in the literature. |
| March 9 |
Review Chapter 6
|
We will work with inheritance and polymorphism in class |
| March 13 |
Chapter 7
|
This chapter could almost be skipped but students have had trouble with linker errors and the tools discussed here are used later in the text. |
| March 15 |
Wrap up Chapter 7. Review for Test
|
|
| Week of March 19 |
Spring Break
|
|
| April 3 |
- Chapter 8
- The Visitor Pattern
- Page 192 - page 199 (This should be somewhat of a review)
|
The Visitor Pattern is one of the harder ones to see at first and some people argue it is not needed. Perhaps the text should have started with a different pattern but it didn't so, do your best and COME IN WITH QUESTIONS. |
| April 5 |
- The rest of chapter 9
- Section 10.3
|
Chapter 9 is a bit long but you have already read part of it. |
| April 10 |
- Sections 11.1 - 11.3 of chapter 11
- Widget Gallery
-check out one of the galleries listed here
|
Here is where we take a good look at Widgets |
| April 12 |
The rest of chapter 11
|
Notice that it deals with card games! |
| April 19 |
- Documentation on File Processing
- Member functions for File I/O
- QTextStream
- Pages 279-285 (top) in C++ GUI Programming with QT 4. If you do not have this book, try to borrow it or see the instructor.
|
The first link takes you to the API for the QFile class. Go over it paying special attention to the "Detailed Description" which has some code. The second link is to the list of all member functions (including the inherited ones) for the QFile class. Review the various versions of read and write. The third link discussed QTextStream, a class needed to make QFile useful. |
| April 24 |
A Qt tutorial
|
This is a long tutorial that ends up with a simple "game" involving the firing of a cannon. You should start reading it and come in with questions. How much you read depends on how many questions you have. As soon as you feel you have enough questions fo fill a class period, STOP! Note: If there are no questions, this would make for a good quiz! |
April 26 |
More of the Qt tutorial
|
Just as with last class, come in with enough questions to fill a class period |
| May 10 |
Final Exam
|
|