CSC207 Software Design

advertisement
CSC207
Software Design
Summer 2011
Lecturer: Hesam C. Esfahani
hesam@cs.toronto.edu
Course goals
1. Developing good large-scale
development practices
2. Learning a more structured (than Python)
language: Java
• We’ll practice good design methods in the context of a new
language.
• The first three weeks and the last two weeks will focus on Java.
The middle of the term focuses on design.
Course goals
1. Developing good large-scale
development practices
2. Learning a more structured (than Python)
language: Java
Agile development methods
Java’s version of OO
• Scrum
• Code Reviews
• Structured mark-up (XML)
• Software development tools
• Netbeans IDE
• Version control: SVN
• Effective communication and
teamwork
• Interfaces, polymorphism,
modularity and info hiding
• Useful libraries: Java Collections,
Swing
Course Overview
Assignments: done individually (including A3);
Project: teams of 4
Project marks are individual: Regular, active contribution to the
Be prepared to present and explain your work and your teammates’ work: each
project submission will include a meeting with your TA.
First tutorial
I usually call the tutorials “labs”. There is a lab this week!
Labs are from 8~9 pm.
We don’t use the regular tutorial rooms. Instead, they will be in the CDF
labs.
The goals of the lab will be to learn about SVN and basic UNIX
commands
– lab assignments:
Last names
beginning with:
Lab Room #
TA
A-G
H-P
Q-Z
BA2159
BA2139
BA2145
Golnoosh Pourshahid
Golnooshp @yahoo .com
Michail Famelis
Famelis@cs.toronto.edu
Lee Zamparo
zamparo@cs.toronto .edu
Announcements
• Discussion Board
– Check it Regularly
https://csc.cdf.toronto.edu/bb/YaBB.pl?board=CSC207H1Y
– RSS Feed:
https://csc.cdf.toronto.edu/bb/YaBB.pl?action=rss;feedboard=CSC207H1Y
Prerequisites
• CSC 148H/150H (including transfer credit)
– Don’t have this? The undergrad office may remove you from the course!
– To avoid this fate, please contact me to explain how you have equivalent background.
• Not in a CS program? Minimum CGPA of 1.50.
– Lacking this requirement will probably result in removal, but I can't save
you.
– Please see the Undergraduate Office instead.
• My prereqs:
– Confidence in your programming ability in at least one language
(probably Python)
– Willingness to engage with your peers to complete a team project.
Prerequisite knowledge
• Language structures:
– Variables, control structures (if, while and for)
– strings, lists, dictionaries, linked lists, trees
– functions, classes
• Concepts:
– recursion, searching, sorting
• Skills:
– good style, code reading and debugging
– top-down design, OO decomposition
– asking (and answering) questions
• (knowing what you don’t know and knowing how to find out!)
Workload: fun facts
A 40- to 50-hour work week implies 8 to 10
hours per course.
Each week: 2 lectures, 1 lab, 5–7 hours of
effective studying/working
One twelfth of the course is over at the end
of this week!
Academic offenses
• It is an academic offence to claim someone else's work as your own.
• It is an academic offence to give someone your work.
• When this happens in the workforce, people are fired.
• The project: teams of four. All other work: team of one.
• You must not share work outside your team or seek out
inappropriate aid.
–
–
What’s inappropriate? Ask me when in doubt!
Always-valid sources: me, the TAs, the text, the Help Centre, anything linked from the course website.
• Make sure to cite any outside resources (like the web or a textbook).
–
I will not charge you with an offence if you have cited properly, although you may not receive a good mark.
Know it all?
• If you have experience with a professional
IDE, Java, version control, and regular
expressions, the department might let you
skip this course.
• If you think you're eligible, please come see
me.
• I also don't want to endanger you.
– I promise not to push you to omit 207 if you don't feel ready.
– Please do this before the last add date (preferably sooner)
Download