Bruce Eckel, Chuck Allison, Thinking in C++ Volume 2, Prentice Hall, 2003. •
Walter Savitch. Absolute C++, 4th edition, Addison Wesley, 2009. Recommended
:.
CS 246: Software Abstraction and Specification (Software Engineering Section) Lecture 1
Course Administration
http://www.student.cs.uwaterloo.ca/~cs247
Calendar Description CS 247 Software Engineering Principles Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modeling, object-oriented programming and design, generic programming, testing and debugging.
U Waterloo CS246se (Spring 2011) — p.2/12
Required Background • Experience programming with C/C++ (structures, strings, procedural abstractions, pointers, addresses, recursion), as covered and used in CS 137/138 and CS 241. No knowledge of object-oriented programming is assumed. • Knowledge of container Abstract Data Types (lists, stacks, queues, trees), as covered and used in CS 138 and CS 241 • Ability to write functional specifications (pre / post conditions), as covered and used in CS 138
U Waterloo CS246se (Spring 2011) — p.3/12
Course Syllabus Objects
Debugging
Specification
Design Patterns
Testing
Libraries
Object Composition
Generic Programming
Inheritance, Polymorphism Incremental Development Design Principles Exceptions Midterm (June 23, 16:30-18:30)
U Waterloo CS246se (Spring 2011) — p.4/12
Course Objectives What students think they learn • obscure details of C++ • UML modelling • UNIX tools
What we're trying to teach • software design (mostly OO design) • multi-person, multi-version software development • ways of improving programmer productivity
U Waterloo CS246se (Spring 2011) — p.5/12
Course Textbooks Textbooks Required: • Bruce Eckel, Chuck Allison, Thinking in C++ Volume 2, Prentice Hall, 2003 • Walter Savitch. Absolute C++, 4th edition, Addison Wesley, 2009. Recommended: • Bruce Eckel, Thinking in C++ Volume 1, 2nd edition, Prentice Hall, 2000 Eckel books free online: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
C++ References • Bjarne Stroustrup, The C++ Programming Language, 3rd edition, Addison Wesley, 1997. • Ray Lischner, C++ in a Nutshell, O'Reilly & Associates, 2003. • Stanley Lippman, Josee Lajoie, and Barbara Moo, C++ Primer, 4th edition, Addison Wesley, 2005.
C++ Best Practices • Scott Meyers. Effective C++, Addison-Wesley, 1992. • James Coplien, Advanced C++: Programming Styles and Idioms, Addison Wesley, 1991 (dated, but still worthwhile) U Waterloo CS246se (Spring 2011) — p.6/12
Course Resources Web page: http://www.student.cs.uwaterloo.ca/~cs247 • • • • •
Announcements Lecture slides Assignment, project descriptions C++, course tools info Course policies (read these!)
Course newsgroup: • • •
www.piazzza.com Forum for discussing lecture material, assignments Wiki-style collaboration on answers to questions Inappropriate postings to the newsgroup are unacceptable, and may be deemed offences under Policies 33 (Ethical Behaviour) or 71 (Student Discipline).
Email: • •
[email protected] (instructor)
[email protected] (tutor)
Please send email from your university account. Email sent from nonUW mail servers may be filtered as spam. •
All email must start the subject line with [CS 247]:
U Waterloo CS246se (Spring 2011) — p.7/12
Assignments Three assignments (15%) • must work individually • due on Fridays at 5:00 PM May 20, June 3, July 26 Course Project (15%) • can work individually or in pairs • two deliverables, due on Fridays at 5:00 PM June 17, July 15 Submission via Marmoset • each assignment is incremental • test cases are associated with increments • no tests are revealed before the deadline
U Waterloo CS246se (Spring 2011) — p.8/12
Late Policy You can have a 48-hour extension on one assignment and one project deliverable without penalty • accommodates conflicts, illnesses, technical difficulties, etc. • anything handed in after the late date receives a grade of 0 • if more than one assignment/project deliverable is handed in late, one of them will receive a grade of 0
U Waterloo CS246se (Spring 2011) — p.9/12
Individual Course Work Unless otherwise specified, course assignments are solo work assignments to be done by each student independently. Students can • Study together • Help each other in diagnosing compiler errors • Help each other to use drawing tools, PDF conversion Students cannot • Discuss assignment answers • Show their work (in progress or completed) to each other • Make use of another student's work • Make use of solutions from previous terms http://www.uwaterloo.ca/academicintegrity/ http://www.math.uwaterloo.ca/navigation/Current/cheating_policy.shtml U Waterloo CS246se (Spring 2011) — p.10/12
Mark Breakdown Assignments: Project: Midterm: Final:
15% 15% 20% 50%
You must pass the exam component of the course to pass the course.
U Waterloo CS246se (Spring 2011) — p.11/12
Tutorials M 1:30-2:20 W 1:30-2:20
MC 1085 MC 4040
• Augment lecture discussion • Introduce useful software tools • Provide a forum for discussing the assignment When there are multiple tutorials per week, each covers the same material. As long as there is adequate space, you may attend any one. No tutorials this week. U Waterloo CS246se (Spring 2011) — p.12/12