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)