Software Engineering
Course Description
Introduction
Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools. The course will combine a strong technical focus with a capstone project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.
Objectives
- An understanding of different software processes and how to choose between them
- How to elicit requirements from a client and specify them
- Design in the large, including principled choice of a software architecture, the use of modules and interfaces to enable separate development, and design patterns.
- Understanding good coding practices, including documentation, contracts, regression tests and daily builds.
Motivations
Course Materials
Resources
- Main Reference: System analysis and design in software engineering, University Text-Book, Iran University of Science and Technology, 1998 (The 10th edition published in 2008, in Persian).
- Buy the book
Tools
- IBM Rational Rose
Sample Exams
- Semester 1388-2
The Book (By Dr Saeed Parsa)
In Memory of Ali Parsa
(تقدیمنامه کتاب مهندسی نرمافزار)
روح پدرم شاد که استاد مرا گفت
فرزند مرا عشق بیاموز و دگر هیچ
تقدیم به روح پدرم علی پارسا دبیر دبیرستانهای تهران
به آن امید که این ناچیز توشه راهی برای آن بزرگوار باشد.
(دکتر سعید پارسا – دانشیار دانشگاه علم و صنعت ایران)
Current Semester (Spring 2018)
This course is not taught in the current semester. You can see and download previous material from the ‘Previous Semester’ section.