300 likes | 412 Vues
Join Prof. Matthew Hertz in "Advanced Programming Topics" to refine your coding abilities. This course incorporates collaborative learning, real-world problem solving, and emphasizes understanding over rote memorization. Participants will engage in hands-on activities, exploring the value of using existing code and peer review. Expect thought-provoking lectures, group discussions, and projects tailored to real-life applications. By the end of the course, you'll be well-equipped to write quality, maintainable code that resonates with both you and your peers.
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