BYU CS Logo
Computing That Serves

CS 340

Course Offerings

Section # Semester Instructor Website Description
1 Fall 2017 Scott Woodfield https://students.cs.byu.edu/~cs340ta/summer2017/
2 Fall 2017 Scott Woodfield https://students.cs.byu.edu/~cs340ta/summer2017/
3 Fall 2017 Ken Rodham https://students.cs.byu.edu/~cs340ta/
Section # Semester Instructor Website Description
1 Winter 2018 Scott Woodfield
2 Winter 2018 Scott Woodfield
3 Winter 2018 Ken Rodham
1 Fall 2017 Scott Woodfield https://students.cs.byu.edu/~cs340ta/summer2017/
2 Fall 2017 Scott Woodfield https://students.cs.byu.edu/~cs340ta/summer2017/
3 Fall 2017 Ken Rodham https://students.cs.byu.edu/~cs340ta/
1 Spring-Summer 2017 Scott Woodfield
1 Spring-Summer 2017 Ken Rodham https://students.cs.byu.edu/~cs340ta/
1 Winter 2017 Quinn Snell https://students.cs.byu.edu/~cs340ta/winter2017/ Lab MWF 12:00p-12:50p
2 Winter 2017 Scott Woodfield https://students.cs.byu.edu/~cs340ta/winter2017/ Lab MWF 2:00p-2:50p
3 Winter 2017 Ken Rodham https://students.cs.byu.edu/~cs340ta/ Lab MWF 4:00p-4:50p
1 Fall 2016 Quinn Snell Lab Hour: 12:00p - 12:50p MWF (134 TMCB)
2 Fall 2016 Scott Woodfield https://students.cs.byu.edu/~cs340ta Lab Hour: 2:00p - 2:50p MWF (134 TMCB)
1 Spring-Summer 2016 Scott Woodfield
1 Winter 2016 Quinn Snell https://students.cs.byu.edu/~cs340ta/
2 Winter 2016 Scott Woodfield https://students.cs.byu.edu/~cs340ta/
3 Winter 2016 Ken Rodham https://students.cs.byu.edu/~cs340ta/
1 Fall 2015 Quinn Snell https://students.cs.byu.edu/~cs340ta/
2 Fall 2015 Scott Woodfield https://students.cs.byu.edu/~cs340ta/
3 Fall 2015 Ken Rodham https://students.cs.byu.edu/~cs340ta/
1 Spring-Summer 2015 Scott Woodfield https://students.cs.byu.edu/~cs340ta/summer2015/
1 Winter 2015 Quinn Snell
1 Winter 2015 Quinn Snell
2 Winter 2015 Scott Woodfield
2 Winter 2015 Scott Woodfield
3 Winter 2015 Ken Rodham https://students.cs.byu.edu/~cs340ta/
3 Winter 2015 Ken Rodham https://students.cs.byu.edu/~cs340ta/
1 Fall 2014 Scott Woodfield http://students.cs.byu.edu/~cs340ta
2 Fall 2014 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Spring-Summer 2014 http://students.cs.byu.edu/~cs340ta/
2 Spring-Summer 2014 http://students.cs.byu.edu/~cs340ta
1 Winter 2014 Quinn Snell http://students.cs.byu.edu/~cs340ta/winter2014/
2 Winter 2014 Ken Rodham http://students.cs.byu.edu/~cs340ta/winter2014/
3 Winter 2014 Scott Woodfield http://students.cs.byu.edu/~cs340ta/winter2014/
1 Fall 2013 Scott Woodfield
2 Fall 2013 Ken Rodham
3 Fall 2013 Quinn Snell
1 Summer 2013 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Winter 2013 Quinn Snell
2 Winter 2013 Ken Rodham http://students.cs.byu.edu/~cs340ta/
3 Winter 2013 Scott Woodfield http://students.cs.byu.edu/~cs340ta/winter2013/woodfield
1 Fall 2012 Scott Woodfield http://students.cs.byu.edu/~cs340ta/fall2012/woodfield
2 Fall 2012 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Spring 2012 Scott Woodfield
1 Winter 2012 Scott Woodfield http://students.cs.byu.edu/~cs340ta/winter2012/woodfield
2 Winter 2012 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Fall 2011 Scott Woodfield http://students.cs.byu.edu/~cs340ta/fall2011/woodfield
2 Fall 2011 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Summer 2011 Scott Woodfield http://students.cs.byu.edu/~cs340ta/summer2011/
1 Winter 2011 Scott Woodfield http://students.cs.byu.edu/~cs340ta/winter2011/woodfield
2 Winter 2011 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Fall 2010 Scott Woodfield http://students.cs.byu.edu/~cs340ta/fall2010/woodfield
2 Fall 2010 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Summer 2010 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Winter 2010 Scott Woodfield http://students.cs.byu.edu/~cs340ta/fall2010/woodfield/
2 Winter 2010 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Fall 2009 Scott Woodfield http://students.cs.byu.edu/~cs340ta/F2009/woodfield/index.html
2 Fall 2009 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Summer 2009 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Winter 2009 Scott Woodfield http://students.cs.byu.edu/~cs340ta/winter2009/woodfield
2 Winter 2009 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Fall 2008 Scott Woodfield http://students.cs.byu.edu/~cs340ta/fall2008/woodfield
2 Fall 2008 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Summer 2008 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Winter 2008 Scott Woodfield http://students.cs.byu.edu/~cs340ta
2 Winter 2008 Ken Rodham http://students.cs.byu.edu/~cs340ta/
1 Fall 2007 Scott Woodfield http://students.cs.byu.edu/~cs340ta
1 Fall 2007 Scott Woodfield http://students.cs.byu.edu/~cs340ta
2 Fall 2007 Ken Rodham http://students.cs.byu.edu/~cs340ta/
2 Fall 2007 Ken Rodham http://students.cs.byu.edu/~cs340ta/

Short Summary: 

Software Design and Testing

Credits: 

3

Prerequisites: 

Software Design and Testing

 

Principles of software design, design patterns, design representation, refactoring.  Principles of software quality assurance and testing.  Development and testing of tools.

Language: Java

 

CS 340 Objectives and Topics

This document is not a syllabus. Instead, for ALL offerings of this course, this document states the purpose, expected objectives, and topics for the course. Faculty members teaching this course should adhere to these objectives and topics. Students taking this course can expect to achieve the objectives and cover the topics specified, and faculty members teaching follow-on courses can expect students to have been appropriately exposed to the prerequisite material as stated.  The “hours” for topics listed below reflect the approximate number of 50-minute class periods (or equivalent) devoted to each topic.

Purpose

This course teaches students how to work in teams to create quality software.  Aimed at solving problems requiring larger solutions, the course teaches students principles of good design and instructs them on how to verify the correctness of programs through testing.

Learning Outcomes

At the end of this course, students should be able to:

  1. Articulate the principles of effective software design.
  2. Know when and how to apply various design patterns.
  3. Demonstrate how to effectively document and communicate software designs.
  4. Understand what quality assurance is, know how to build quality into software using review    techniques, and demonstrate quality evaluation through testing.
  5. Use a variety of software development tools, including IDEs, automation tools, static analysis tools, source code control systems, unit testing tools, and documentation tools.
  6. Work effectively in a group to produce quality software using 1-5 above.

Topics

1.    The software development process (1 hour)
2.    Specifications (2 hours)
3.    Design
a.    Principles of good design (2 hours)
b.    Documentation (3 hours)
c.    Architectural and design patterns (11 hours)
d.    Design by contract (2 hours)
4.    Quality Assurance
a.    Reviews (1 hour)
b.    Testing (6 hours)
5.    Specialization and Reuse (1 hour)
6.    Refactoring (4 hours)
7.    Project Support, including tools, GUIs, and working in groups (8 hours)