Prerequisites and co-requisites |
None |
Language of instruction |
English |
Type |
Required |
Level of Course |
Bachelor's |
Lecturer |
Asst. Prof. Omid SHARIFI |
Mode of Delivery |
Face to Face |
Suggested Subject |
None |
Professional practise ( internship ) |
None |
Objectives of the Course |
To develop team working skills that are much needed in the software industry. Team work has been recognized as an important aspect of today's engineering education and is, as such, explicitly specified in the accreditation requirements for our program. To develop the communication skills of the students through presentations on theme topics. To obtain practical hands-on experience with a Model-Driven Development commercial tool for real-time object oriented systems, which generates code from high-level software models. This year we are using Rational Rose RealTime , which is a UML-based engineering tool, specifically optimized for developing complex event driven real-time software applications for various domains such as
telecommunications, data communications, defense, aerospace and other industries. |
Contents of the Course |
This course introduces concepts and techniques relevant to the production of large software systems. Students are taught a programming method based on the recognition and description of useful abstractions. Topics include modularity, specification, data abstraction, object modeling, design patterns, and testing. Students complete several programming projects of varying size, working individually and in groups. |
# |
Learning Outcomes |
1 |
At the end of the course, each student will have experienced all aspects of a software
development project, including: |
2 |
working with a client to define goals and priorities |
3 |
designing a system |
4 |
scheduling and planning
a multi-person project |
5 |
effective communications, running meetings |
6 |
writing technical documentation, writing and testing code |
7 |
deploying the system, public presentations |
# |
Subjects |
Teaching Methods and Technics |
1 |
Introduction |
Lecture, discussion, presentation |
2 |
Object semantics |
Lecture, discussion, presentation |
3 |
Subclassing |
Lecture, discussion, presentation |
4 |
Specifications |
Lecture, discussion, presentation |
5 |
Testing |
Lecture, discussion, presentation |
6 |
Object model notations |
Lecture, discussion, presentation |
7 |
Midterm |
Exam |
8 |
Abstraction functions |
Lecture, discussion, presentation |
9 |
Dependencies and decoupling |
Lecture, discussion, presentation |
10 |
Polymorphism: guest lecture by Gilad Bracha |
Lecture, discussion, presentation |
11 |
Subtypes and subclasses |
Lecture, discussion, presentation |
12 |
Classes and interfaces |
Lecture, discussion, presentation |
13 |
Usability, Design patterns, Managing a small software team |
Lecture, discussion, presentation |
14 |
|
|
15 |
|
|
16 |
Final Exam |
Exam |
# |
Learning Outcomes |
Program Outcomes |
Method of Assessment |
1 |
At the end of the course, each student will have experienced all aspects of a software
development project, including: |
4͵6͵10 |
1͵2 |
2 |
working with a client to define goals and priorities |
4͵6͵10 |
1͵2 |
3 |
designing a system |
4͵6͵10 |
1͵2 |
4 |
scheduling and planning
a multi-person project |
4͵6͵10 |
1͵2 |
5 |
effective communications, running meetings |
4͵6͵10 |
1͵2 |
6 |
writing technical documentation, writing and testing code |
4͵6͵10 |
1͵2 |
7 |
deploying the system, public presentations |
4͵6͵10 |
1͵2 |