Course Details

Credits and contact hours: 3 credits, two lectures per week (50 minutes each) and 1 2-hour lab per week (110 minutes)

Instructor's or course coordinator's name: Elizabeth Boese

Text book, title, author, and year: Practical Software Development Techniques (Fourth Edition), Edward Crookshanks, 2013.

Other supplemental materials: Unix, Regex Golf, Regex, Makefiles, [optional] Ant, Bash Shell Scripting, Software Process & Methodologies by David Kung, Scrum Framework (just the chapter on Scrum Framework), Version Control by Erik Sink Chapters 1, 2, 5, 6, 8, Planning Poker, RDBM, E-R Diagrams, Intro to SQL Pages 1-13 (stop before views) and 16 group by/having, NoSQL, XML tutorial, JSON tutorial, SOAP vs REST, Retrospectives, Cloud, Testing, Klocwork, Find Bugs.

Specific Course Information

Brief Description of the Content of the Course (Catalog Description)

Covers tools and practices for software development with a strong focus on best practices used in industry and professional development, such as agile methodologies, pairprogramming and test-driven design. Students develop web services and applications while learning these methods and tools.

Prerequisites or Co-requisites

CSCI 2270 Computer Science 2: Data Structures.

Indicate Whether a Required, Elective, or Selected Slective (as per Table 5-1) Course in the Program


Specific Goals for the Course

Specific Outcomes of Instruction

The student will learn the fundamentals of software development methods and tools you are likely to find in use in the workplace.

The student will acquire state-of-the-art skills that will not only help them do their work in other programming classes but will also give them a very useful vocabulary to use on job applications and during interviews.

The student will be able to use a variety of tools introduced in class.

The student will be able to choose the best tool for use in a specific situation.

The student will be able apply what you learn in the context of a small group semester long project.

Explicitly Indicate Which of the Student Outcomes Listed in Criterion 3 or Any Other Outcomes are Addressed by Course

  • Apply Knowledge
  • Computing Requirements
  • Design System
  • Teamwork
  • Communicate Effectively
  • Analyze Impacts
  • Professional Development
  • Current Techniques
  • Design Tradeoffs
  • Design & Development

Brief List of Topics to be Covered

  • Software Process Models
  • Waterfall, Iterfall, Agile
  • Software Patterns
  • Architectural Design
  • Requirements Elicitation and Analysis
  • Documentation
  • Licensing/Copyright/Patents/IP
  • Code Quality
  • Testing Methods and Strategies
  • Static and Dynamic Analysis
  • Code Repair Strategies
  • Refactoring
  • Code/Peer Review
  • Code Management
  • Source Code Control and Managing Conflicts
  • Software Configuration Management Systems
  • Bug Tracking
  • Managing Dependencies/Build tools/Integration
  • Continuous Integration
  • Unix tools
  • Data stores/access/formats/models
  • Software Deployment and Deployment environments/models: Development Environments