300 likes | 406 Views
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.
E N D
Prof. Matthew HertzWTC 207D / 888-2436 hertzm@canisius.edu CSC 313 – Advanced Programming Topics
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'tsuck • 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
Teaching Style • Reasoning more important than answer • Once answered, rarely see question again • Lucky guesses are not meaningful • Explaining how & whydemonstrates 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 teamsto 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 • 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, Iconsider 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