Syllabus

In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all the stages of the software life cycle. Topics in this course include requirements analysis, specification, design, abstraction, programming style, testing, maintenance, communication, teamwork, and software project management. Particular emphasis is placed on communication and negotiation skills and on designing and developing maintainable software.  Use of computer required. Several written assignments, in-class presentations, and a term project. This course satisfies the Integrative Experience requirement. Prerequisite CMPSCI 220 or equivalent. 4 credits.


This page lists the topics of the course, the textbook, provides an overview of grading, discusses plagiarism and collaboration, and lists the course policies.

Topics of the course

This course covers the foundations of Software Engineering and and its application to the construction of a large software system in a group setting. Topics covered will include:


Topics
Process Models Design Patterns
Object Oriented Design Anti Patterns
Test Driven Design Test Driven Development
Unit Testing Continuous Integration
Version Control Teamwork


Textbook

There is no text required for this course.

Grading

Your final grade in this class will be based upon in class activities, quizzes, and the semester project.

All assignments are due as indicated on the assignment and the Moodle page.  Late assignments will only be accepted in accordance with University policy, at the sole discretion of the instructor.

Collaboration, Plagiarism, and Intellectual honesty

Your work must be your own. For anything other than exams, you are welcome to discuss general issues with other students, but the answer, the writing, and the final result that you hand in must be your own effort. Discussing or sharing answers to specific problems is considered dishonest. If you have questions about what is honest, please ask! One suggestion is never to write down anything while you're talking with someone about class work since that will require you to come up with the result again on your own later. You are strongly encouraged to cite your sources if you received extraordinary help from any person or text (including the Web), other than lecture content or the textbook. Computer Science Department policy specifies that the penalty for cheating is (1) a final course grade of "F" and (2) possible referral to the Academic Dishonesty Committee.

For any material you hand in, you must appropriately indicate when you are using work of others. If you use verbatim or only slightly altered text, you must clearly indicate (quotation marks, indented text, etc.) that you are quoting another source and what that source is. If you refer to work done by others, even if you do not quote it, you should include a reference to the original source. It does not matter if that work was published or not: if it is work other than your own, you are obligated to make it clear that you are using that person's work. Plagiarism will not be tolerated in this class. Plagiarism is a type of cheating and will be treated accordingly: the penalty for cheating is (1) a final course grade of "F" and (2) possible referral to the Academic Dishonesty Committee. The campus writing program provides more information about plagiarism.

You may (but probably won't) be using copyright-protected software as part of the class. Federal law and license agreements between the University and various software producers prohibit copying this software for any purpose. Such activity will be regarded as a form of cheating and will be dealt with as such.

Course policies