CS 320: Introduction to Software Engineering

What is CS 320 about?

Software engineering goes beyond designing and writing code. It involves communication with customers, users, and other technical and non-technical professionals. A software engineer must specify the behavior and operating parameters of a system based on the ideas of a customer who may not understand the technical aspects of software. A software engineer acts as a consultant to help elicit the customer’s needs and translate them into formal specifications that can be used to design and build the required software system.


In this course, you 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 out for a customer we have selected. The goal is to exhibit a working software application that fulfills the customer's needs. The project is carried out in teams using agile software development methodology.


Topics in this course include requirements analysis, specification, design, abstraction, 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 is required. There are several written assignments, in-class presentations, and a term project. This course satisfies the IE Requirement.

Prerequisite: CMPSCI 220. 4 credits.



What is Integrative Experience?

CS 320 is an integrative experience (IE) course. It focuses on developing communication, reflection, and learning-aware learning skills. You get the opportunity to:

·       engage in an in-class discussion at the start of the semester about what you will learn in CS 320 and how the skills you have acquired in your general education requirements will help you.

·       engage in a reflective in-class discussion at the end of the semester about what you actually learned, and which learning activities were the most effective.

·       work extensively in groups.

·       present your work orally in class.

·       participate in active-learning activities with significant reflection components (including on design, system understanding, and security in software).

·       reflect on submitted assignments and improve and resubmit the work, and be guided by CS 529 students and their experience having previously taken CS 320.


How does the course work?

You are assigned to a development team run by a project manager. Project managers are students enrolled in CS 529, an advanced class on project management. Project managers are present for all CS320 lecture and discussion meetings, and are available to their teams throughout the semester. (The prerequisite to take CS 529 is an A- or better in CS 320 and instructor approval).


This course does not teach you to program. Software engineering is a larger concept than programming and both cannot be taught in a single semester class. You should already be proficient in at least one programming language (such as Java or C++). You should have successfully completed a course that deals with large software programs that consist of and make use of code libraries and APIs to communicate with other systems. For example, an application that utilizes libraries to build a user interface and also communicates with a database system. You must be able to work as a member of a team to the extent that you contribute in a meaningful way to the development process of your team.


Do I have to attend class?

Yes, your participation in class enhances your learning experience and that of your peers. Conceptual material will be presented in lecture, project work will take place in discussion. Much project work will be done outside of class.


How is the course structured?

Teams are formed in the first week. Each team will spend the semester developing a software application for a customer we have selected. The goal is to exhibit a working software application that fulfills the customer's needs. The project is carried out in teams using agile software development methodology.


CS320 uses the Moodle learning management system. The course website is on Moodle. Communication and posting of course material will be via Moodle. All assignments will be submitted via Moodle.


Please see the syllabus for the course plan (including the grading scheme).