Software Engineering Minor
Effectively building modern software systems at scale requires not just programming skills, but also engineering skills. These skills include the ability to interact effectively with customers to gather the requirements for a system in a precise way; to develop a design that resolves competing quality attributes; to make tradeoffs among schedule, cost, features, and quality to maximize value to stakeholders; to work effectively with other engineers; and to assure the quality of the delivered software system. We hear regularly from industry that these skills are crucial to them, and that they are interested in students with a strong software engineering background.Overview
The software engineering minor is designed to teach the fundamental tools, techniques, and processes of software engineering. Through internships and a mentored project experience, students gain an understanding of the issues of scale and complexity that motivate software engineering tools and techniques. The core curriculum includes material both on engineering the software product and on the process, teamwork, and management skills that are essential to successful engineering. Graduates of the program should have the technical, process, and teamwork skills to be immediately productive in a mature engineering organization.
Admission
The Software Engineering Minor is open to undergraduate students in any major in the university. The program is limited to 15 students per incoming class (as of Fall 2011, however, we are not yet close to that limit). For priority consideration, applications are due 10 days before the beginning of Spring and Fall course registration, and decisions will be made 3 days before course registration begins so students can plan effectively.Upcoming due dates are April 13, 2012; November 16, 2012; April 12, 2013; November 8, 2013; and April 11, 2014. Students may petition the Director for admission outside this schedule.To apply, send us an email. Include in your email:
- Full name
- Andrew ID
- Preferred email address (if different)
- Semester you intend to graduate
- QPA
- All (currently) declared majors and minors, or home college if no major declared
- Statement of purpose (maximum 1 page) - Describes why you want to take this minor and how it fits into your career goals
- Proposed schedule of required courses and internship (this is your plan, NOT a commitment)
Prerequisites
- 15-214 Principles of Software Construction: Objects, Design, and Concurrency
Core Course Requirements
There are two required core courses in the minor degree:- 15-313 Foundations of Software Engineering
- 15-413 Software Engineering Practicum
Electives
The minor requires 3 elective courses, one selected from each of the following categories:
- A domain-independent course focused on technical software engineering material
- 15-414 Bug Catching: Automated Program Verification and Testing
- 17-606 Software Systems Security Engineering (not offered Fall 2007)
- 17-609 Global Software Development
- 17-615 Software Process Definition
- 17-619 Introduction to Real-Time Software and Systems
- 17-651 Models of Software Systems
- 17-652 Methods: Deciding What to Design
- 17-653 Managing Software Development (prerequisite: 15-413 or an internship)
- 17-654 Analysis of Software Artifacts
- 17-655 Architectures for Software Systems (prerequisite: 15-413 or an internship)
- 17-664 Enterprise Application Integration
- 17-690 Seminar in Software Process
- Other courses, with prior approval from the Director of the Software Engineering Masters Program.
Ask before you take the course!
- An engineering-focused course with a significant software component
- 15-410 Operating System Design and Implementation
- 15-412 Operating System Practicum
- 15-437 Web Application Development
- 15-440 Distributed Systems
- 15-441 Computer Networks
- 15-610 Engineering Complex, Large-Scale Computer Systems
- 17-643 Hardware for Software Engineers
- 18-549 Embedded Systems Design
- 18-649 Distributed Embedded Systems
- 18-749 Fault-Tolerant Distributed Systems (not presently offered)
- Other courses, with prior approval from the Director of the Software Engineering Masters Program.
Ask before you take the course!
- A course that explores computer science problems related to existing and emerging technologies and their associated social, political, legal, business, and organizational contexts
- 05-801 Computer-Supported Cooperative Work
- 08-200 Ethical Dilemmas and Policy Issues in Computing
- 08-300 Constructing Appropriate Technology
- 08-531 Usable Privacy and Security
- 08-532 Law of Computer Technology
- 08-533 Privacy Policy, Law and Technology
- 08-781 Mobile and Pervasive Computing Services
- 08-782 Adaptive Trading Technologies
- 08-801 Dynamic Organizations and Networks
- 08-810 Computational Modeling of Complex Socio-Technical Systems
- 15-390 Entrepreneurship for Computer Science
- 15-391 Technology Consulting in the Community
- 15-421 Web Commerce, Security and Privacy
- 19-402 Telecommunications, Technology Policy & Management
- 19-403 Policies of Wireless Systems and the Internet
- 70-311 Organizational Behavior
- 70-414 Technology Based Entrepreneurship for CIT
- 70-421 Entrepreneurship for Computer Scientists
- 70-459 Web Business Engineering
- 70-471 Logistics and Supply Chain Management
- 88-260 Organizations
- 88-341 Organizational Communication
- 88-343 Economics of Technological Change
- 88-393 Technology and Economic Growth
Required Internship and Reflection Course
A software engineering internship of a minimum of 8 full-time weeks in an industrial setting is required. The student must be integrated into a team and exposed to industry pressures. The intern may work in development, management, quality assurance, or other relevant positions. The director of the SE minor program has sole discretion in approving an internship experience based on these criteria. Students should confirm that an internship position is appropriate before accepting it, but internships that fulfill the criteria will also be accepted after the fact.- 17-413 Internship Reflection (required 6 unit course, number to be determined, to be offered Fall semester): Each student will write an issue-focused reflection and analysis of some personal software engineering experience, typically (but not always) based on the engineering internship above. This report must be passed by one SCS faculty member and one SE Ph.D. student, for both technical content and effective written communication. Initial course meetings will cover the reflective, writing, and speaking process. In later meetings, each student will present his or her experience through a 30-45 minute talk, which will be evaluated for communication skills and critical reflective content. This course is limited to enrollment of 16, and students who are admitted to the minor program are given first priority.
Double Counting Rule. At most 2 of the courses used to fulfill the minor requirements may be counted towards any other major or minor program.
