Xiao Qin                                                                                
COMP2710 Software Construction


Course Information  


Course Objectives  

Academic Integrity  


Getting Help  

Office Hours  


Undergraduate Research Assistantship

Photo by llnl photos on Flickr.

  • Lab 4 is assigned. Please check BLACKBOARD. Design portion due: 4/21/2010; Programming Portion due: 4/30/2010. [Posted 04/12/2010]

  • Lab 3 is assigned. Please check BLACKBOARD. Design portion due: 4/2/2010 Friday; Programming Portion due: 4/12/2010 MOnday. [Posted 03/24/2010] 

  • How to mask passwords? See an example here: passwordc.cpp 

  • Due day for Lab 2 programming portion is postponed to 3/24/10. 

  • How to remove an element from a vector? See an example here: vectorerase.cpp 

  • Lab 2 is assigned. Please check BLACKBOARD. Design portion due: 3/10/2010 Wednesday; Programming Portion due: 3/21/2010 Sunday. [Posted 02/26/2010]

  • A list of chapters to be covered in the midterm exam can be found here: Midterm-Chapters.txt

  • The midterm exam is scheduled on Friday, Feb. 26. Same time and place as class.

  • How to get an integer from a keyboard? See an example here: getnumber.cpp [Posted 02/10/2010]

  • An example of the Menu Class can be found here: Lec05b-Lab 1 Menu Class.pdf [Posted 02/10/2010]

  • An example for case cases can be found here: useCases.ppt [Posted 02/1/2010]

  • Lab 1 is assigned. Please check BLACKBOARD. Design portion due: 2/10/2010 Wednesday; Programming Portion due: 2/19/2010 Friday. [Posted 01/29/2010]

  • How to read a file name in from your keyboard? See an example here: inputfilename.cpp

  • A better example can be found here: inputfilenamev2.cpp

  • Homework 2 is assigned. Please check BLACKBOARD. Due: 1/29/2010. [Posted 01/22/2010]

  • How to generate a random number? Click here.

  • Please download a sample code rand.cpp. Click here.

  • Homework 1 is assigned. Please check BLACKBOARD. Due: 1/20/2010. [Posted 01/15/2010]

  • The classroom is changed to Lowder Hall 110. [Posted 01/11/2010] 

  • The webpage of comp2710 is launched. [Posted 01/08/2010]

Course Information

  10:00 am - 10:50 am  MWF 

 Lowder Hall 110 

TA: Prabhu Selvaraj,  

Office Hour:MWF 4:00pm-5:00pm. 

Office: 2117 Shelby Center, Desk 13

COMP 2710 is highly schizophrenic in that it is both a course on managing the complexity of large systems and an applied programming class. Managing software complexity requires some knowledge of software process. Applied programming means that you will be required to critically analyze real-world types of problems, design algorithms, and then implement those algorithms in high-level code to solve problems.  COMP 2710 is as much about learning to solve problems as it is about C++ Programming. This course requires organization, effort, and discipline. You should prepare for every class and bring LOTS of questions – COMP 2710 is not a passive viewing experience. If at any time you feel that you are falling behind, you should contact the instructor immediately and come to office hours frequently. The keys to success in this course are attending every class, starting on homework assignments as soon as they are assigned, actively studying for exams, and always requesting help in a timely fashion.  This course typically requires 9 hours of time per week, on average for the average student. If you don’t have it, drop. 


COMP2210 Fundamentals of Computing.

Course Objectives

 Upon successful completion of the course, the student should be able to:

    (1) Analyze problems to determine system requirements
    (2) Develop object-oriented software designs that map to requirements identified in analysis
    (3) Develop software using sound programming principles
    (4) Grasp both C++ Syntax and Semantics
    (5) Have experience in developing non-trivial software applications
    (6) Understand concepts of data abstraction, efficiency, and memory management
    (7) Understand how to perform software testing.



Required Text: Savitch, Walter. Absolute C++, 2nd or 3rd Edition. 2005 . Addison-Wesley.


Administrative Stuff (Lecture 1)
C++ Intro: History, Basics, through Flow of Control (Lectures 1-2)
I/O: Basic, File (Lecture 3)
Functions: Basics, Overloading, Templates (Lectures 4-6)
Arrays (Lecture 7)
Structures & Classes: Basics, Constructors (Lectures 8 – 10)Software Process (Basics of Analysis, Design, and Testing) (11-13)
Midterm Exam (Lecture 14)
Vectors and Iterators (Lecture 15)
Operator Overloading (Lectures 16-17)
Strings and Streams (Lectures 18-20)
Pointers & Dynamic Arrays (Lectures 21-24)
Inheritance and Polymorphism (Lectures 25-28)
Additional Topics covered as they occur:  Separate Compilation, Makefiles, Templates
“Flex” Lectures (Lectures 29-31)Final Exam will be Thursday on Dec. 10th, 2009


Exams: Midterm Exam, Final Exam
Exams will be closed book, closed notes. Questions will be derived from lectures, material taught only in class, and from assignments. Question format will be mixed.

Short Homeworks and Activities: 3 homeworks 
These activities will be take-home in nature and designed to reinforce concepts taught in class. They will be due in writing at the beginning of class. An electronic copy may also be necessary (specified in the assignment). Generally, these assignments are designed to be low-risk in the sense that they are designed to assess thinking and effort, rather than to strictly punish errors.

Individual Construction Projects: 4 Lab Assignments 
These projects will consist of the creation of design artifacts (turned in prior to the implementation) and correct C++ implementations of project specifications. All projects should be made to compile under the g++ compiler on Linux. You may use any development platform or compiler, but your projects will be graded ONLY on a g++ compiler running on Linux. If your project does not work in that environment, you will NOT get credit. Always test it yourself in the lab (Shop 3)!

Individual Projects will be graded as follows:
Analysis, Design, and Testing Documents: 30%
Adhering to coding style: 10%
Program meets specifications and implements key features correctly: 60%
(Note that efficiency is not a grading criteria in this class)

Getting Help

Assignments may prove challenging and time-consuming. You are always welcome to bring questions concerning labs to the class, as well as to office hours. A good strategy is to always start early on projects, so that if you run into difficulties, you can get help as soon as possible. I will do my best to answer e-mails concerning labs within 48 hours of receiving them; however, I do not guarantee that I will always have time to debug code via e-mail (I prefer not to do so). For time-consuming problems dealing with code, office hours are always preferable. I will not help debug code via e-mail on the day an assignment is due. The Blackboard Discussion Board is a great way to ask questions so that everyone benefits from the answer to your question!

Office Hours

MW 8:00am - 9:00am. You are always welcome to drop by during office hours to discuss projects or general concepts. To get urgent help or advice out of office hours, it is recommended to send an email in advance to make an appointment.

TA: Prabhu Selvaraj,  MWF 4:00pm-5:00pm. 

Office: 2117 Shelby Center, Desk 13

Course Difficulty

Typically, the course starts off relatively easy and gets harder as time goes on. Often, students are deceived by the (slower) initial pace and develop lazy habits at the beginning of the course. By mid-semester, they have thrown away many grade opportunities and find themselves in a bad situation with respect to grades. No amount of effort at the end of the class will compensate for consistent, dedicated effort throughout the class. Whether or not you have past experience with programming (or even with C++), my strongest recommendation is that you respect the class and come to class ready to engage every single class period. If you do this, you will dramatically increase your chances of success.


Class attendance is mandatory. This is an important undergraduate class; therefore, students will have to actively participate in class. It is believed that if you miss many classes (more than 6), there is a strong likelihood that you will not pass the class. Please notify me in advance if you will attend conferences, research meetings, or the like.


Mid-term                                20%  
Final Exam                            20%  
Quizzes                                 10%
Class Participation                  5%
Written Assignments              10%
Lab Assignments                    35%
A [90, 100], B [80,90), C [70,80), D [60,70), F [0,60)
Note: In order to pass the class, you must receive at least 60% credit on the Individual Construction Projects and Homework, regardless of performance on exams.

Project Due Dates

Projects will be submitted through Blackboard. Projects will always be due at 11:55 pm on the due date. Late assignments will receive a grade of zero (0) Deadlines will be made as generous as possible to a priori take into account illness, other courses, Acts of God, and nearly all conceivable excuses. If you have a documented illness preventing you from completing your assignment, you may submit all of your partial work and request an extension. This extension is not automatic.


Academic Integrity:
Students will be expected to understand and follow Academic Honesty policies in place by the university. All work is to be done individually. Students should NOT share any project code or even detailed algorithm information with each other. Your programming code is exclusive to you.


Special Accommodations

A student in need of special accommodations must bring that need to my attention within the first two weeks of class. The need must be properly documented.

Study Hints

Ask questions in class.
At the first sign of difficulty, talk to your instructor and teaching assistant.
Form a study group and meet regularly.
Construct chapter summaries noting concepts, definitions, & procedures.

Misc Related Material

Instructor Wiley's C++ Tips

gdb Tutorial

Teaching Research
Publications Students
Software Pronounce My Name
Useful Links Personal



Updated on: 11/17/2009