Quick Show of Hands
Used code that someone else wroteand enjoyed the experience?
Had someone else use your code
Quick Show of Hands
Used code that someone else wroteand enjoyed the experience?
Had someone else use your codeand not cast aspersions on your intelligence?
Quick Show of Hands
Used code that someone else wroteand enjoyed the experience?
Had someone else use your codeand not cast aspersions on your intelligence?
Looked at code you wrote 6 months ago
Quick Show of Hands
Used code that someone else wroteand enjoyed the experience?
Had someone else use your codeand not cast aspersions on your intelligence?
Looked at code you wrote 6 months agowithout thinking, “What was I smoking?”
Quick Show of Hands
Used code that someone else wroteand enjoyed the experience?
Had someone else use your codeand not cast aspersions on your intelligence?
Looked at code you wrote 6 months agowithout 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
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
Grades available via Angel Tests given on Mar. 12th & Apr. 19th
Receive one grade for both lab & lecture
Course Grading
Tests 26%
Final 30%
Lab Projects 25%
Activities 7%
Pattern Report 12%
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
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
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