Print Version

Effective: Winter 2014

Advisory: Advisory: C S 1B or C S 2B.
Grade Type: Letter Grade, the student may select Pass/No Pass
Not Repeatable.
FHGE: Non-GE Transferable: CSU/UC
4 hours lecture, 3 hours laboratory. (84 hours total per quarter)

Student Learning Outcomes -
  • Use an iterative, agile process to develop a quality software product
  • Design a computer program that employs the Model/View/Controller pattern
Description -
A collaboration-oriented course that trains students in the techniques currently used by software engineers to develop reliable products in an efficient manner. The course emphasizes Agile methods and a variety of tools used during the software development lifecycle.

Course Objectives -
The student will be able to:
  1. Discuss the history of software development models.
  2. Design a usable user interface for a software product.
  3. Use the Agile process to develop a quality software product.
  4. Understand the roles in a Scrum team.
  5. Use Extreme programming techniques.
  6. Design a complex software architecture that employs the Model/View/Controller pattern.
  7. Use the Unified Modeling Language to design and document the relationships between different classes in an object oriented program.
  8. Use Test Driven Development while coding.
  9. Use a source code repository to share code with team members and integrate for testing.
  10. Use an automated testing tool.
  11. Use an open source code library to implement a software product.
  12. Follow specific style and documentation guidelines to ensure readability and modifiability.
Special Facilities and/or Equipment -
  1. Access to a computer laboratory with Java and C++ compilers.
  2. A website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
  3. When taught via Foothill Global Access on the Internet, the college will provide a fully functional and maintained course management system through which the instructor and students can interact.
  4. When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.

Course Content (Body of knowledge) -
  1. The history and viability of software engineering methods
    1. Structured programming
    2. Object-oriented programming
    3. Waterfall method
    4. CASE tools
  2. User interface design
    1. User centered design
    2. Prototyping
    3. User testing
    4. User interface guidelines
  3. The Agile process
    1. User stories
    2. Team structure and teamwork
    3. Product backlog
    4. Sprints
    5. Planning
    6. Acceptance tests
    7. Recurring delivery
    8. Retrospecting
  4. Roles in a Scrum team
    1. Product owner
    2. Development team
    3. Scrum master
    4. Stakeholder
    5. Manager
  5. Extreme Programming (XP)
    1. Pairs programming
    2. Continuous integration
    3. Collective code ownership
    4. Sustainable pace
  6. Unified Modelling Language
    1. Use cases
    2. Collaboration diagrams
    3. Class diagrams
    4. State diagrams
  7. Model/View/Controller
    1. Design patterns
    2. Application frameworks
    3. Client/server
  8. Software Quality Assurance
    1. TDD process
    2. Unit tests
    3. Test frameworks
    4. Refactoring
  9. Version control
    1. Command line and GUI
    2. Local and remote repositories
    3. Branch, commit, merge, clone
    4. Code integration
  10. Style and documentation Guidelines
    1. Style guidelines
    2. Coding standards
Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. Final examination
Representative Text(s) -
Cohn. Succeeding with Agile: Software Development Using Scrum. Pearson Education, Inc., Boston, MA: 2010.

Disciplines -
Computer Science
Method of Instruction -
  1. Lectures.
  2. Online labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. An assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each assignment and submit their completed lab work.
    2. A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publicly with other class members.
  3. Team project.
  4. When course is taught fully on-line:
    1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices.
Lab Content -
  1. Software engineering through time
    1. Modify an unstructured and a structured but non-object oriented program.
    2. View a CASE tool.
  2. Design a user interface
    1. Perform a user test and revise.
    2. Ensure adherance to user interface guidelines.
  3. The Agile Process
    1. Write user stories.
    2. Work in a team toward a common goal.
    3. Maintain a product backlog.
    4. Work in sprints to complete a product.
    5. Plan for tasks to develop in the near future.
    6. Write an acceptance test.
    7. Deliver product at multiple times throughout the development process
    8. Reflect on each delivery to see what could be done better.
  4. Work with different roles in a scrum team
    1. Participate as a development team member on a project.
    2. Work with team members in other roles on a scrum team.
  5. Extreme Programming
    1. Practice pairs programming.
    2. Integrate and release code often.
    3. Work at a sustainable pace in a team that rises or falls together.
  6. Unified Modelling Language
    1. Write a set of use cases for a software product.
    2. Read a collaboration diagram.
    3. Write a simple class diagram.
    4. Read a state diagram.
  7. Model/View/Controller
    1. Read code that employs a design pattern.
    2. Use an application framework.
    3. Discuss tradeoffs between implementing functionality on the client as opposed to on the server.
  8. Software Quality Assurance
    1. Test driven development
    2. Unit tests
    3. Test frameworks.
    4. Performance testing.
    5. Refactor code to reduce duplication.
    6. Automated testing tools
    7. Categorize bugs
  9. Version Control
    1. Integrate code from different engineers into one source.
    2. Open source code libraries.
    3. Use a source code control system.
    4. Check code into both a local and a remote repository
Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to software engineering.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.