Prof. Matthew Hertz WTC 207D / 888-2436 hertzm@canisius.edu CSC 313 – ADVANCED PROGRAMMING TOPICS What I Saw During Break Quick Show of Hands Used code that someone else wrote Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Had someone else use your code Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Had someone else use your code and not cast aspersions on your intelligence? Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Had someone else use your code and not cast aspersions on your intelligence? Looked at code you wrote 6 months ago Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Had someone else use your code and not cast aspersions on your intelligence? Looked at code you wrote 6 months ago without thinking, “What was I smoking?” Quick Show of Hands Used code that someone else wrote and enjoyed the experience? Had someone else use your code and not cast aspersions on your intelligence? Looked at code you wrote 6 months ago without thinking, “What was I smoking?” Written code you know is really optimized? High-level Objectives Learn to write code that doesn't suck Bug-free (within reason) Even after 6 months, can be modified & updated Less likely to be hunted & killed by colleagues Have programs complete before next ice age Have fun Expectations of Me Lectures prepared and organized Give interesting, thoughtful, fun problems Be (reasonably) available to answer questions Be honest and forthright Why Most Classes Suck Teaching Style Reasoning more important than answer Once answered, rarely see question again Lucky guesses are not meaningful Explaining how & why demonstrates mastery Class participation is vital Need to understand problem to adjust approach Adult Learning Students read material before class (Short) lecture explains key ideas Provides 2nd opportunity to see material Limits long, boring droning Students work in teams to solve problems Make sure you actually understand material Easy to correct when mistakes made early Expectations of You Work hard Come to class prepared Support & help all your classmates Ask for help early and often Let me know what you are thinking Important Policy Class examines real-world problems Not typical for most CSC courses Requires everyone act like you are an adult Assumption needed for labs to be reasonable Keeps the problems small, but sufficient Use simple meanings without arguing Important Policy Class examines real-world problems Not typical for most CSC courses Requires everyone act like you are an adult Assumption needed for labs to be reasonable Keeps the problems small, but sufficient Use simple meanings without arguing Course Grading Tests Final Lab Projects Activities Pattern Report 26% 30% 25% 7% 12% Grades available via Angel Tests given on Mar. 12th & Apr. 19th Receive one grade for both lab & lecture Grading Philosophy Grades reflect student's demonstrated ability Not a competition where grades are relative Quite happily give "A" to all who earn it Remain fair for students past, present, & future When in doubt, I consider what is most fair Effort alone insufficient to raise a score Important to reward working efficiently Grading Philosophy Would you rather have: Doctor Who Cures You Doctor Who Works Hard Course Grading Goals Build skills needed to write good code Provide opportunities to learn & improve Present material in variety of ways Spot problems early & correct them quickly Lab Programs Develop skills needed for real world When working on little projects, this is hard Better when you care about project you are using If you have a project you want to work on… … please use it if it can be fit into a lab Will also provide hum-drum problem with lab Not all topics fit in every project Only use techniques when they really apply Collaboration Fellow students are a great resource Provides multiple viewpoints & understandings Get together, discuss material, and study Can have them answer lingering questions Clarify assignment and what it requires Learn and practice some basic social skills Collaboration Work you submit must be done by you When discussing lab projects for this course Leave conversation with memories only Wait 15+ minutes before starting on your own Solutions always unique after waiting Step away from computer when discussing code When in doubt, ask me Course Website Pages for course found on Angel Handouts, slides, assignments posted before class Can also find solutions after work is due May not include everything said in class Better than nothing, but worse than being here! Textbook Head First Design Patterns, Eric Freeman and Elisabeth Freeman, O’Reilly Media, 2004. Additional readings linked from Angel pages Available at local bookstores & amazon.com Covering most of this textbook Read me that page, Daddy! -Shoshanna Hertz (at age 3) Design Patterns Grady Booch called them: One of greatest advances in past fifteen years Booch popularized object-oriented design in 80’s In last fifteen years, co-created UML in 1997 Agile Alliance founder (along with others) Abstracts programs to go far beyond code Popular for object-oriented systems: C#, C++, Java PHP, Perl, ECMAscript use; commonly used on web Drives modern scripted languages: Ruby, Groovy Grady’s Words [C]ode is the ultimate truth, but not all the truth. There is […] a loss of information […] from vision to construction[…] Even though I may stare at some code, I do not have access to the rationale or the patterns that sweep across the […] code For Next Lecture Read pages 1 – 14 in the book For next lecture: Describe 2 great & 2 lousy tools What makes them great/bad? Who were they made for? How do they accomplish the job? There is lab Friday Only time you must attend the actual lab