120 likes | 254 Vues
EECE 310 Software Engineering. Lecture 0: Course Orientation. What is this course about?. Building program modules Programming in the large Other skills – design, documentation, and testing. Building Program modules. Abstraction mechanisms Procedures Exceptions Data abstractions
E N D
EECE 310Software Engineering Lecture 0: Course Orientation
What is this course about? • Building program modules • Programming in the large • Other skills – design, documentation, and testing
Building Program modules • Abstraction mechanisms • Procedures • Exceptions • Data abstractions • Iteration abstraction • Polymorphic abstractions • Concurrent programming
Programming in the large • 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
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, ... • 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 • Emphasis on C/C++ language Abstraction Advanced OO Emphasis on Java Mastery of CPSC 260 topics assumed
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 large-scale software development and its challenges
Course grading • Assignments (50%) • Five assignments (10 % each) • Exams (45 %) • Mid-term (15 %) • Final (30 %) • Class participation (5%) • 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 • 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 • 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 • You should expect to spend a significant amount of time outside class working on the assignments
Administrivia … • Instructor: Karthik Pattabiraman (karthikp@ece.ubc.ca) • TAs for the course: • Frolin Ocariza Jr. • Anna Thomas • Office hours: • Karthik’s office hours: Tuesdays 1 to 2 PM • Anna and Frolin: During labs on Wed, and Thurs • Website: