Programming Pragmatics (CS390K)

Course Information

Title: Programming Pragmatics
Institution: Metropolitan State University of Denver
Course ID: CS 390K
Semester: Fall 2016
Meetings: §1 Tuesdays & Thursdays 10:00AM - 11:50AM
§2 Mondays & Wednesdays 6:00PM - 7:50PM
Location: Central 101
Hours: Credit Hours: 4
Contact Hours: 60
Additional Student Work Hours: minimum 120 hours outside of class
Prerequisites: CS2050 with grade of "C" or better
Moodle Site:
Instructor: Dr. Jody Paul (schedule & office hours)
E-mail: jody @ computer . org
Office: Science 1038 (x68435)
Campus Mail: Campus Box 38

Catalog Text

This upper-division course addresses pragmatic aspects of programming essential for generating correct programs in real-world environments. Emphasis is on those things that “every programmer should know,” including development principles (such as test-first development), best practices (such as source management and build configuration), and automated tools (such as static analyzers, debuggers, and test frameworks).


Additional Notes

The course provides opportunities to gain experience and to expand the set of useful mental and technological tools. It also includes practical tips for becoming a better programmer, acquired over decades of experience in industry and the study of programming best practices.

Participants are expected to already have a good working knowledge of the Java programming language and be willing to try out new approaches and techniques for software development.

This course requires significant time spent outside of the classroom. Students should be prepared to budget 150 hours outside of class to successfully complete the requirements for this course.

The final course grade is comprised of in-class assessments and submitted assignments.

Required Books

Cover of Clean Code Clean Code
by Robert C. Martin
Prentice Hall (2008); ISBN 0132350882

Cover of Pragmatic Unit Testing Pragmatic Unit Testing in Java 8 with JUnit
by Jeff Langr, et al.
Pragmatic Bookshelf (2015); ISBN 1941222595

Cover of Henney book 97 Things Every Programmer Should Know:
Collective Wisdom from the Experts

edited by Kevlin Henney
O'Reilly (2010); ISBN 0596809484

Cover of Butcher book Debug It!
Find, Repair, and Prevent Bugs in Your Code

by Paul Butcher
Pragmatic Bookshelf (2009); ISBN 193435628X
Required for Extra-Credit Assignments Only

Optional Books

Cover of Subversion Guide Pragmatic Guide to Subversion
by Mike Mason
Pragmatic Bookshelf (2010); ISBN 1934356611

Cover of Subversion Guide Mastering Redmine - Second Edition
by Andriy Lesyuk
Packt Publishing(2016); ISBN 1785881302

Cover of JUnit book Effective Unit Testing:
A guide for Java developers

by Lasse Koskela
Manning Publications (2013); ISBN 1935182579

Online Readings

Logo for Subversion Version Control with Subversion
by B. Collins-Sussman, et al. (2016); Available Online

Logo for Redmine Redmine: User Guide
by Redmine (2015); Available Online

website link Software Engineering:
Software Development Tools (2016); Available Online

Course Policies

Class Sessions & Websites

You are expected to prepare in advance for class sessions (reading, exercises, etc.) and to participate in class discussions and collaborative activities. Participation in class discussions and activities is mandatory and constitutes part of the overall grade for the course. There are no “make-ups” for missed in-class activities and exercises.

A substantial amount of information is disseminated during class sessions. Additional information is provided via the course website. You are responsible for knowing this information whether or not you attended the sessions or accessed the website. In particular, the textbooks and references provide some but not all of the information necessary to successfully complete the course.

In addition to important course and domain information, the course support website (moodle) provides the primary vehicle for managing assignments and other assessments.

Due Dates/Times

Deliverables associated with assignments may be submitted for scoring at any time prior to the published due date/time.

No assignment deliverables will be accepted after the published due date/time.

Students have successfully applied the strategy of setting their own "individual" deadline to be 24 hours in advance of the published due date/time. In support of this practice, out-of-class assignments will be made available and have due dates/times set to provide ample time for completion and submission more than 24 hours prior to the published due date/time.

Because there are many risks to completion and submission, you are strongly encouraged to target completion of an assignment no less than 24 hours prior to the published due date/time and to submit an assignment no less than 12 hours prior to the published due date/time.

Illness, crises, and emergency situations will be dealt with on a case-by-case basis in accordance with University, College, and Departmental policies.

Scoring & Grading

Your final course grade is determined by combining all assessments of performance. The maximum possible score of each item reflects its relative weight, thus the scores for the items are summed to determine the cumulative total score. Conversions from numerical scores to letter grades are as shown.

A  : 93% ≤ score
A- : 90% ≤ score < 93%
B+ : 87% ≤ score < 90%
B  : 83% ≤ score < 87%
B- : 80% ≤ score < 83%
C+ : 77% ≤ score < 80%
C  : 73% ≤ score < 77%
C- : 70% ≤ score < 73%
D+ : 67% ≤ score < 70%
D  : 63% ≤ score < 67%
D- : 60% ≤ score < 63%
F  : score < 60%

Assignments & Projects

Assignments and projects represent your opportunity to learn new concepts, practice applying those concepts and new tools, and reflect on your experiences. The intent is to enhance your understanding as well as to demonstrate your knowledge of the concepts and ability to apply them. Details regarding assignments and projects will be provided in class or on the course moodle website. Assignments must be turned in using the course moodle website unless explicitly specified otherwise. In particular, e-mail and hard-copy will not be accepted in lieu of online submission.


Every assignment and project turned in must include a section (maximum 150 words) labeled “Reflection” in which you reflect on the experience by describing your personal insights and observations about your learning. This reflection is required whether or not the assignment specification mentions it explicitly and comprises a portion of the score of every assignment and project.

Online Submission

Assignments must be turned in using the course moodle website unless explicitly specified otherwise. In particular, e-mail and hard-copy will not be accepted in lieu of online submission.

The moodle "assignment" activity allows you to enter and upload working-drafts that you do not intend to be scored. Your drafts will not be considered for scoring, before or after the due date/time.

To submit your assignment entry for scoring, you must click the Submit button for that assignment and accept the subsequent attestation.

  • Use of the Submit button indicates that the assignment is ready to be scored.
  • Failure to click the Submit button and accept the attestation will result in NO earned score for the assignment.
Deliverable Formats

When available, the Online text field of a moodle assignment should be used for text-based responses and for reflections. File attachments to Online text are generally not desirable.

Formats of files turned in for assignments must not depend on specific operating system or commercial software.

Examples of generally acceptable formats: ASCII or UNICODE UTF-8 text, HTML, PDF, GIF, JPEG, PNG. Examples of specifically unacceptable formats: Microsoft Word, Apple Pages, Microsoft PowerPoint, Apple Keynote, Microsoft Excel, Apple Numbers.

Acceptable formats for archives include only tar and zip. If a specific archive format is required it will be specified in the assignment itself.

A deliverable submitted in an unacceptable format is equivalent to no submission at all. If you are unsure about the acceptability of a file format, please check with your instructor well prior to submission.

Quiet Period

The 24-hour period immediately preceding the published due date/time for an assignment is considered a quiet period. During that 24-hour interval, the instructor will not address questions directly referencing specifics of that assignment. All students are strongly encouraged to complete assignments well in advance of this quiet period. Further, since computer systems are likely to be strained during the 24-hour period immediately preceding a published due date/time, you should not depend on such systems, including the course support servers, to be consistently available during that period.


Collaboration & Citation of Sources

Successful programming is rarely a solitary endeavor devoid of external contributions. Collaboration, teamwork, and consultation of work by others are the norms.

Collaborative activity is required for successful completion of this course. In particular, collaboration is encouraged and regarded as an essential aspect of learning computer science and programming. Collaboration and discussion with fellow students and instructors concerning course information, materials, assignments, projects, proofreading, concept exploration and studying for exams is strongly encouraged. You are not expected to learn the course content or work on assignments and projects in complete isolation.

That said, in order to provide fair assessment for grading, the work you turn in must be your own. You must write up your own submissions, reflecting your individual effort, for every assignment you turn in to be assessed, even if the solution results from collaborative effort. In your submission, you must credit the people with whom you worked.

If you consult any sources, your submission must explicitly reference the sources and indicate where and how they apply.

Turning in work that includes quotations without corresponding citations, does not properly cite references, or does not credit collaborators, will be treated as an act of academic dishonesty. All incidents of suspected dishonesty will be reported to the Chair of the department and the Dean of the college. Consequences may include a score of 0 on the assignment, a grade of "F" for the course, academic probation, or dismissal from the institution. This is a very serious matter and should not be taken lightly. If you have any uncertainty or concerns, please discuss them with your instructor or your advisor.

Official Information

Official policies applicable to all courses may be accessed at

Students are responsible for full knowledge of the provisions and regulations pertaining to all aspects of their attendance at MSU Denver, and should familiarize themselves with the following policies provided on that website:

  • General University Policies
      Students should be aware that any kind of withdrawal can have a negative impact on some types of financial aid, including scholarships.
  • Accommodations to Assist Individuals with Disabilities
  • Academic Dishonesty
  • Class Attendance on Religious Holidays
  • Prohibition of Sexual Misconduct
  • Electronic Communication (Student Email) Policy

MSU Denver Academic Calendar:
Additional official dates and deadlines, including the last dates to withdraw and holidays

MSU Denver Student Handbook:
Important Metro State and Auraria campus policies and procedures for students