CPTR 571
System Software and Architecture Winter 2015

Home Code Assignments WebGrades


Instructor

Rick Halterman

School of Computing
1117E Hickman Hall
Southern Adventist University
Collegedale, TN 37315-0370
423-236-2871

halterman@southern.edu
http://computing.southern.edu/halterman

Office Hours: http://computing.southern.edu/halterman/General/OfficeHours


Course Venue

HSC 1307   Monday 5:15pm–7:45pm


Textbooks


Prerequisites

CPTR 365, CPTR 318 or equivalents


Purpose

Catalog description:

CPTR 571. System Software and Architecture 3 hours
Prerequisite(s): CPTR 365, CPTR 318 or equivalents
A study of the design and implementation of software systems. Software systems design issues in contemporary software systems; description, structure, architecture, development, testing, and deployment. A major software system will be developed. (Winter Odd Years)

For this particular course offering, students will:

  1. explore the design and implementation of application programming interfaces for software systems
  2. examine the major design patterns used in software development
  3. explore some of the more advanced features of C++ that facilitate systems software development
  4. implement a major C++ standard library based on a high-level technical specification
  5. use tools for version control and to assist in the creation of technical documentation


Class Requirements and Grading

Class Work. The following class activities, weighted as indicated, determine the student's overall average for the course.

Activity

Weight

Assignments

30%

Quizzes

20%

Midterm Examination

25%

Final Examination

25%

Grade Distribution. The overall average determines the course grade according to the following table:

Overall Average
(a)

Letter
Grade

92 ≤ a

     A

90 ≤ a < 92

     A–

88 ≤ a < 90

     B+

82 ≤ a < 88

     B

80 ≤ a < 82

     B–

78 ≤ a < 80

     C+

70 ≤ a < 78

     C

60 ≤ a < 70

     C–

58 ≤ a < 60

     D+

52 ≤ a < 58

     D

50 ≤ a < 52

     D–

a < 50

     F

Remarks

Programming Experience. This course assumes students have a working knowledge of the C++ programming language. Please review the material at The C++ Language Tutorial website to brush up on your C++ skills. This site also has a downloadable PDF version of its C++ tutorial.

This course is project-intensive. This means you should expect to spend considerable time working on the programming projects. Generally, you must submit each assignment electronically, as described in class. Your code will be compiled and checked for correctness and completeness. You may elect to work in any environment and upon any platform, but your submitted code must compile and run correctly under Microsoft Visual Studio 2013 using Visual C++. Visual Studio is available on the departmental lab workstations, and students can get Visual Studio for free from the departmental Dreamspark Premium account.

Appropriate study for the course includes reading the textbook (at least as far as last class's lecture material) and working through the exercises at the end of each chapter. Periodic quizzes encourage students to remain current in their class preparation. Usually quizzes will be distributed at the beginning of the class period. Missed quizzes may not be made up.

Each test contributes significantly to the overall grade. In certain situations, due to unavoidable circumstances, a missed test may be made up. Arrangements for the retake should be made before the time of the originally scheduled test. The make-up test may vary greatly in form from the original test, but its content (topics addressed) will be similar.

Ethics. It is expected that each student work individually on programming assignments. Any submitted work must be the original work of the submitter. Any work or portion thereof derived from an outside source must be documented as such. Students representing the work of others as their own without giving due credit to the original authors risk receiving zero credit for the assignment and a grade of F in the course.

As long as each student develops her own logic and code, it is permissible to help each other over occasional rough spots. Portions of programs should never be shared. Those involved in allowing their programs, or parts of their programs, to be copied, or copying from other students' programs risk receiving a grade of F in the course.

All incidents of academic dishonesty will be reported to the Associate Vice-president of Academic Affairs.

Class decorum. Please comply with the standards of classroom attire as specified in the Student Handbook.  Notebook computers are welcome, and the classroom and lab (generally) have an excellent wireless signal.  Those with computers should mute the volume and sit in the rear of the class so as not to distract students behind them.  Electronic devices must be turned off during quizzes and tests.  You are expected to remain in the classroom during quizzes and tests, so be sure to take care of affairs (such as bathroom visits and tissue acquisition) before you sit for the quiz or test.

Examinations.  Each test contributes significantly to the overall grade. In certain situations, due to unavoidable circumstances, a missed test may be made up. Arrangements for the retake should be made before the time of the originally scheduled test. The make-up test may vary greatly in form from the original test, but its content (topics addressed) will be the same. Because of this difference, any points added (the so called "curve") to tests taken during the regularly scheduled time may not apply to retakes.

The final examination is worth 20% of your total course grade. Please note the date and time for our final exam on the tentative class schedule. You need to plan to take your final exam at the scheduled time. Please make your work and vacation plans accordingly. Academic Administration will grant approval for variance from the published exam schedule only in cases of verified, serious, illness or a death in the immediate family. Academic Administration may, in case of exceptional and unavoidable circumstances, approve a variance, in consultation with the professor of this course. A $65 processing fee may be assessed.

Extra credit. Since the assigned material and activities are sufficient for most students, no extra credit will be available for additional work. However, well-prepared students wishing to enhance their learning experience beyond the class activities will be directed, upon request, to additional resources. Any such additional work will not influence the grade for this class.  

SAU account.  All students must have an active Southern Adventist University email account. This account is necessary to receive class messages and to be able to use the computers in the programming lab. If you normally use a different email address, please set up your SAU account to forward your email to your preferred address; instructions about how to do this are available upon request.

Learning Success Services. In keeping with University policy, any student with a disability who needs academic accommodations must call Disability Support Services at 236-2574 or stop by Lynn Wood Hall, room 308, to arrange a confidential appointment with the Disability Services Coordinator during the first week of classes. (Students who request accommodations after the third week of the semester should not depend on receiving accommodations for that semester. Legally, no retroactive accommodations can be provided. For more details, visit the Learning Success Services Web site at http://lss.southern.edu/.) Students whose accommodations requests are approved will be provided confidential letters for them to deliver to their professors for review and discussion about how to implement the accommodations in relation to particular course requirements. Accommodations for disabilities are available only as recommended by Disability Support Services.


Topics

Date

Text Chapter

Topics

January 12

H14–19

Review of object-oriented programming in C++: classes, inheritance and polymorphism, generic programming

January 19

No class: Martin Luther King Jr. Day/Community Service Day

January 26

R1

Introduction to APIs: purpose, contracts, examples

February 2

R2

Qualities of APIs: abstraction, modeling, detail hiding, coupling, robustness

February 9

R3

Patterns: Pimpl, singleton, factorial methods, proxy, adapter, façade, observer

February 16

R4

Design: functional requirements, use cases, architecture design, class design, function design

February 23

R5

Styles: flat C APIs, OO C++ APIs, template-based APIs, data-driven APIs

March 2

Midterm Examination

March 9

No class: Spring Break

March 16

R6

C++ usage: namespacees, RAII, const correctness, templates, operator overloading, function parameters, exporting symbols, coding conventions

March 23

R7

Performance: minimizing #include dependencies, constants, initialization lists, memory optimization, inlining, iteration, performance analysis

March 30

R8

Versioning: numbering, branching, API life cycle, backwards compatibility, API reviews

April 6

R9

Documentation: motivation, types of documentation, licensing, Doxygen

April 13

R10

Testing: unit testing, integration testing, performance testing, writing good tests, writing testable code, test harnesses, code coverage, bug tracking

April 20

R11

Scripting: extending vs. embedding, script wrapping technologies, Python, Ruby

April 27

R12

Extensibility: extending via plugins, extending via inheritance, extending via templates

May 4

Final Examination

Rn = Reddy Chapter n; Hn = Halterman Chapter n;


Important Dates

  • Monday, January 12: first day of class
  • Monday, January 19: no class (MLK Jr./Community Service Day)
  • Monday, March 2: midterm exam
  • Monday, March 9: no class (spring break)
  • Monday, May 4 at 5:15 PM: final exam


Class Code

Code we develop in class is available at here.