EECE 310 Software Engineering Course Orientation

advertisement
EECE 310
Software Engineering
Lecture 0: Course Orientation
What is this course about?
2

Building program modules

Programming in the large

Other skills – design, documentation, and testing
Building Program modules

Abstraction mechanisms
1. Procedures
2. Exceptions
3. Data abstractions
4. Iteration abstraction
5. Polymorphic abstractions
6. Concurrent programming
3
Programming in the large
4

How to design and implement large programs

Requirements analysis and specification

Design

Implementation and testing
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?

Java language 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, ...

6
Though you’ll use concepts learned in this class for these
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
Abstraction
Advanced OO
Emphasis on C/C++ language
Emphasis on Java
Mastery of CPSC 260 topics assumed
7
Why should you take this course ?
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
Learn to design robust and maintainable code

Many of the things you’ll learn have immediate
applications (e.g., testing, specifications, design patterns)

If nothing else, you’ll develop an appreciation for largescale software development and its challenges
8
Course grading

Assignments (50%)



Mid-term (15 %)
Final
(30 %)
Class participation (5%)


9
(10 % each)
Exams (45 %)


Five assignments
In class activities
Piazza
Labs and Assignments

Labs in MCLD 348 starting this week


The TAs will be there to answer questions
And to grade assignments on the days they are due
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
Submission mechanics



10
You must attend labs on the days the assignments are due
TAs will come to each computer and evaluate your solution
Also, submit your code to the Tas for plagiarism checking
To succeed in this course …

Attend the lectures and participate in activities



The concepts may seem easy or even obvious
sometimes, but they are hard to apply or get right




We will have active learning components in each class
Ask questions, come to office hours if needed
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
You should expect to spend a significant amount
of time outside class working on the assignments
11
Administrivia …

Instructor: Karthik Pattabiraman (karthikp@ece.ubc.ca)

TAs for the course:



Office hours:



Frolin Ocariza Jr.
Anna Thomas
Karthik’s office hours: Tuesdays 1 to 2 PM
Anna and Frolin: During labs on Wed, and Thurs
Website:
12
Download