Instructor Name:
Curtis Sollohub
Office Hours:
M 11:00 - 12:00 and 2:00 - 3:00
T 11:00 - 12:00
W 11:00 - 12:00
Th 11:00 - 12:00
I am around most of the time so make an appointment
Textbook:
Required:
- An Introduction to Design Patterns in C++ With Qt4
Authors: Alan and Paul Ezust
Publisher: Prentice Hall / Pearson Education
ISBN: 0-13-187905-7
- The online C++ textbook
Recommended:
C++ GUI Programming with Qt 4
Authors: Jasmin Blanchette and Mark Summerfield
Publisher: Prentice Hall / Pearson Education
ISBN: 0-13-187249-4
- Pattern-Oriented Software Architecture
Authors: Frank Buschmann etc.
Publisher: Wiley
ISBN: 0-471-95869-7
- Design Patterns
Authors: Erich Gamma etc.
Publisher: Pearson Education
ISBN: 81-7808-135-0
Course Objectives
The key objective of this course is to develop students' programming skills. To that end it focuses on issues such as development environments, individual and pair-programming, event driven (GUI) programming, program design, and the use of programming patterns. As a sideline students will learn C++ and something about programming on a Linux platform. Here are the major topics of the course:
- IDE's for Linix
- GUI programming
- Patterns
- Object-Oriented Design
- C++
- UML
Learning Outcomes:
At the conclusion of this course students should have:
- A good understanding of the importance of patterns in the design of programs and be able to use a number of patterns from the "Gang of Five" Collection.
- The ability to write and explain UML diagrams
- Knowledge of C++ that includes at least the ability to write working C++ programs that involve:
-branching and looping statements
-interactive (GUI) and file-based I/O
-simple data structures such as lists, stacks and queues
-classes and inheritance
- Basic debugging skills
- General knowledge of Linux as a platform for programming
- A working knowledge of one Linux programming environment and an ability to discuss its strengths and weaknesses.
- Knowledge of basic object-oriented and C/C++ terms including:
-functional decomposition
-subroutine library
-pass by value and pass by reference
-CRC card
-Use Cases
- The ability to present a "professional" style code walk-through
Course Work and Methods of Instruction:
Instructional
methods used in this course include subject overview lectures, presentations,
classroom problem solving projects and exercises, out-of-class assignments,
discussions, examinations and quizzes, and feedback sessions. Students will be asked to read about C++, Qt (a GUI programming environment), the KDE programming environment, make tools, object-oriented design, and programming patterns. The lectures and discussions will not cover C++ and Qt syntax, the KDE programming environment and make tools unless the students ask questions. Programming exercises will be assigned to encourage students to learn this material. Lectures and discussions will focus on program design and programming patterns unless students come in with questions. At all times, students are encouraged to guide the discussion to what they need to understand the material and complete their work.
Instructional Philosophy and Techniques
To be successful learners, students need to take responsibility for their own
learning. To encourage the taking
of responsibility, the instructor will take a
problem-based learning approach.
As part of that approach, there will be little lecturing in this course by the instructor.
Instead, the instructor will seek out questions on the readings, provide group activities for self-learning, and,
when students do not ask questions, sometimes have an oral quiz.
Exams, Assignments. and Other Gradeable Work
Students will be assigned readings and homework exercises. There may well be quizzes on the readings, especially when students do not come in with questions. (See the section on quizzes below). Many of the labs will be designed in such a way that students who come in prepared with finish the material during the time allotted and not have any homework from the lab. Those who do not come in prepared may well not finish the material and have extra homework. In other words, preparation for both the lecture and lab times in highly desirable.
There will be two tests during the course, both covering basic issues in coding and design. There will also be one short paper (3 - 5 pages) discussing topics to be named later.
The single largest part of the course will involve two projects. These will involve the design and implementation in C++ and Qt of programming problems using the pair-programming approach. The first project will be assigned by the instructor but students are encouraged to make suggestions. The pairs for this project will be determined by the instructor, again with input from students.
By week four each student will come up with his or her own idea for a second project. These should be complex enough to demonstrate both one's object-oriented design and C/C++ abilities while not being too complex for the time constraints of a semester course. The ideas will be presented both in class and via a web page as part of an effort to seek a working partner. Students will then choose who to team up with and choose one project to work on for the rest of the semester. The teams for this project should be different from the teams for the first project.
As a final the student teams will present their projects. The presentations will include a discussion of the project's design and walk throughs of key parts of the implementation.
To encourage students to consider this course in the larger context of computer science students will be expected to attend at least one outside computer-related event. The most obvious example of this is a talk.
Grading
Policy
The final grade will be computed as follows:
A
- Receive a grade of 'A' for one of the two projects - including the final presentation.
- Receive a grade of at least 'B+' for the second of the two projects - including the final presentation.
- Receive a grade of at least a 'B' for the small paper.
- Receive an average grade of at least 85% for the homework
- Receive an average grade of at least 80% on the two tests
- Attend at least one outside computer-related event
- Meet all other requirements with a grade of 80% and participate in class.
B
- Receive a grade of 'B' for one of the two projects - including the final presentation.
- Receive a grade of at least 'B-' for the second of the two projects - including the final presentation.
- Receive a grade of at least a 'B-' for the small paper.
- Receive an average grade of at least 75% for the homework
- Receive an average grade of at least 75% on the two tests
- Attend at least one outside computer-related event
- Meet all other requirements with a grade of 75% and participate in class.
C
- Receive a grade of 'C' for one of the two projects - including the final presentation.
- Receive a grade of at least 'C-' for the second of the two projects - including the final presentation.
- Receive a grade of at least a 'C-' for the small paper.
- Receive an average grade of at least 65% for the homework
- Receive an average grade of at least 60% on the two tests
- Attend at least one outside computer-related event
- Meet all other requirements with a grade of 65% and participate in class.
D
- Receive a grade of 'D' for one of the two projects - including the final presentation.
- Receive a grade of at least 'D-' for the second of the two projects - including the final presentation.
- Receive a grade of at least a 'D-' for the small paper.
- Receive an average grade of at least 55% for the homework
- Receive an average grade of at least 50% on the two tests
- Attend at least one outside computer-related event
- Meet all other requirements with a grade of 55% and participate in class.
Please note that to receive a specific grade you need to meet all the expectations for that grade.
Course
Policies:
Quizzes:
The number of quizzes
will depend on you the students. Class will begin everyday with
time for student questions. On days when there are
no or few questions, the instructor may have an oral or written quiz. (After all, if there are no questions, the students must have a
good understanding of the material!) Students should come into class having read the material and prepared
with questions.
Assignments and Projects Policy:
All work except the team projects has to be done
independently. Each team in the team projects should work independently. Homework assignments will be due at the beginning of the next class unless the assignment sheet says otherwise. Larger assignment will be due at the end of the specified day - unless the student does not show up for class that day. In this case, the assignment will be due at the beginning of class that day!
Late assignment will be accepted,
with a 10%
grade penalty for each day late. Nothing received more than five (5) school days late unless there is a valid written excuse.
Attendance Policy:
The instructor will not keep attendance.
Class
participation will be monitored and will be used in determining grades.
This subject requires a combination of in-class discussion,
out-of-class assignments, and examinations. Prompt attendance and participation
are important to successful understanding of the subject matter. You can not
participate unless you attend class. Of course, making
any kind of disruption (e.g. talking , continually coming to class late or
leaving class early, the use of cell phones, etc.) in the class will
affect your participation grade negatively
Academic
Honesty:
Any acts of academic dishonesty including plagiarism (unlawful
copying of any form of intellectual ideas, thoughts, written scripts, etc.)
will be prosecuted. Cheating or copying from your peers on exams, quizzes, or
assignments is both against university policy and unethical and
will consequently
result
in the student receiving a ZERO grade on that particular exam/assignment.
Resubmission
will not be allowed. More than one incident of cheating or copying will in most cases result in
receiving a failure grade in the course.
It is perfectly acceptable to integrate the work
of others (but not students) into your papers and other work, so long as the original
source of the information is properly acknowledged. Using the ideas of others without proper acknowledgment constitutes plagiarism and is viewed as cheating.
On programming assignments it is acceptable to discuss general ideas including
algorithms with your fellow students. It is not acceptable to discuss the actual code, copy someone's
code, or show your code to another student. If you use code written by someone else other than a student, the code should be properly and boldly referenced with comments in the code itself.
Serious (as decided by the instructor) and repeated incidences of
academic dishonesty will be referred to the appropriate office and handled according
to Highlands University policy. Note: This could mean removal from the course
or even the university. (You can get more information on what constitutes
academic dishonesty from the Policy on Academic Integrity available in the
Academic Affairs Office.