Programming Practices

Course Number: CS 262
Transcript Title: Programming Practices
Created: February 17, 2015
Updated: July 10, 2015
Total Credits: 4
Lecture Hours: 40
Lecture / Lab Hours: 0
Lab Hours: 0
Satisfies Cultural Literacy requirement: No
Satisfies General Education requirement: No
Grading options: A-F, P-NP, audit
Repeats available for credit: 0

Prerequisites

Course Description

Introduces and establishes practices for developing large-scale software systems, including relational databases, software development tools, distributed version control, inspection and test, and agile methods. Prerequisite: CS 162. Audit available.

Intended Outcomes

Upon successful completion of this course, students will be able to:

  1. Construct and maintain a relational database, including normalization. Evaluate the ACID properties of a database.
  2. Use modern tools for program construction and delivery, including configuration management systems and continuous integration services.
  3. Use distributed version control for large, sophisticated software products, utilizing branching, merging, tagging, signing and similar features of the system.
  4. Use industry-grade techniques for software inspection and test, including Fagan inspection, unit test frameworks, regression test frameworks and test coverage tools.
  5. Apply practices from agile methods to software construction, such as pair programming, test-first, and standups.

Outcome Assessment Strategies

Homework, observation, class discussion, examination.

Course Activities and Design

Lecture, in-class and out-of-class assignments, discussion and examination.

Course Content (Themes, Concepts, Issues and Skills)

  • tools
    • relational database
    • ontinuous build/integration
    • bug tracking
    • build systems
    • configuration management systems
  • distributed version control
    • branching
    • merging
    • tagging
    • signing
  • test driven development
    • unit test
    • regression test
    • acceptance test
    • coverage
  • agile
    • pair programming
    • iterative development