EECE 310Software Engineering : EECE 310Software Engineering Lecture 0: Course Orientation
What is this course about? : What is this course about? Building program modules
Programming in the large
Other skills – design, documentation and testing 2
Building Program modules : Building Program modules Abstraction mechanisms
Procedures
Exceptions
Data abstractions
Iteration abstraction
Polymorphic abstractions 3
Programming in the large : Programming in the large How to design and implement large programs
Requirements analysis and specification
Design
Design patterns
Design evaluation
Implementation and testing 4
Other skills : Other skills Understand how individual activities are integrated into the software engineering life-cycle
Appreciate the value of good design and sound engineering principles in software construction
Apply sound techniques for writing specifications, building test-suites, developing design documents
Learn how software engineering works in the “real world” or at least the way it should 5
What is this course NOT about? : What is this course NOT about? Java/C#/C++ or its (or third party) libraries
Eclipse or any other integrated development environment (IDE) or build tool
Distributed systems, software security, databases, HCI, computer games, ...
Though you’ll use concepts learned in this class for these 6
How is EECE 310 different from earlier software courses (pre-requisite classes) ? : How is EECE 310 different from earlier software courses (pre-requisite classes) ? APSC 160: Intro. to Computation in Eng. Design
Introduction to programming languages
CPSC 260: Object-Oriented Program Design
Data structures
Introduction to OO
Emphasis on C/C++ language Abstraction Advanced OO Emphasis on Java Mastery of CPSC 260 topics assumed 7
Why should you take this course ? : Why should you take this course ? 8 Fundamental class in object-oriented design
You will learn not just how to do it, but why do it that way
Appreciation of design and aesthetics of software
Many of the things you’ll learn have immediate applications (e.g., testing, design patterns, specifications)
If nothing else, you’ll develop an appreciation for large-scale software development and its challenges
Course grading : Course grading Practice (20 %)
In-class activities (5 %)
Assignments (15 %)
Exams (55 %)
Mid-term (20 %)
Final (35 %)
Term project (25 %) 9
Labs and Assignments : Labs and Assignments 10 Labs in MCLD 348 starting from next week
You must be present and demonstrate the solution to the assignment during the session when the assignment is due
You are responsible for ensuring that your code works on the computers in the lab (not on your personal laptops)
The TAs will be there to answer questions about assignments
Assignments: To be done in teams of two
Same partner for all assignments preferred
Same grade for both you and your partner
You must individually be able to explain your solution to us
To succeed in this course … : To succeed in this course … 11 Attend the lectures and participate in activities
We will have active learning components in each class
Ask questions, come to office hours if needed
The concepts may seem easy or even obvious sometimes, but they are hard to apply or get right
Try to solve the recommended exercises in the book
Do the assignments yourself and don’t just hack them
Understand the solutions to the quizzes/mid-term
Think about your project and finish it early !