csc 213 – large scale programming
DESCRIPTION
Prof. Matthew Hertz WTC 207D / 888-2436 [email protected]. CSC 213 – Large Scale Programming. Objectives Met in CSC213. Develop solution over entire software lifecycle Specify & design computational solutions Implement & test computational solutions - PowerPoint PPT PresentationTRANSCRIPT
CSC 213 – LARGE SCALE PROGRAMMING
Prof. Matthew HertzWTC 207D / 888-2436 [email protected]
Objectives Met in CSC213
Develop solution over entire software lifecycle Specify & design computational solutions Implement & test computational solutions Describe which data structure to use & explain why Describe execution of fundamental data structures
Know operational details of languages & systems Understand file structures, storage, and indexes
Know theoretical foundations of computing Trace & analyze algorithms
High-level Objectives
Improve coding ability Learn skills needed to develop larger
systems Master tricks used to solve common
problems 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 Since not reliable, lucky guesses are not
meaningful Explaining how & why demonstrates
mastery Once answered, rarely see question again
Class participation is vital Need to understand difficulty to adjust my
approach
Adult Learning
Students will need to read material before class
Answer initial questions at start of class (Blissfully 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 mistakes if caught early in
learning
Expectations of You
Work hard Come to class prepared Support & help all your teammates Ask for help early and often
Let me know what you are thinking
Attendance
Attendance is mandatory Talk to me once you know you must miss
class You are responsible for every class Missing class is never acceptable excuse
Best way to earn a poor grade: skip class
Deadlines
Have 1 “virtual extension” Only on programming projects will it be
accepted Use is automatic; no need to warn before
submission Extension on each weekly assignment
possible Given when good notes on reading
submitted on-time Must be used that week, but can be earned
every week Late work not accepted without
extension If you know you cannot make a deadline,
talk to me Earlier we talk, the better we can find a
solution
Grading Philosophy
Grades reflect student's demonstrated ability Not a competition where grades are
relative Quite happily give "A" to all who earn it "A" not automatic because score is highest
in class Remain fair for students past, present,
& future When in doubt, I consider what is most fair
Hard work alone insufficient to raise a score Good life skill I want to reward: working
efficiently
Course Grading
Midterms 30%Final 25%
Projects 18%Weekly Assignments 10%
Daily Activities 7%Quizzes 10%
Grades available via Angel Midterms given on Mar. 2nd & Apr.
11th
3 programming projects during semester
Course Grading Goals
Build skills used by “real” programmers
Lots of opportunities to learn & improve
Present material in variety of ways Develop understanding needed for
later classes Catch and correct problems early
Weekly Assignments
Posted on web/Angel each week Normally due by 5PM following Tuesday
Can earn virtual extension for all of these assignments
Should get 100% on all; ask me questions you still have
Several goals for these assignments Provide additional programming
opportunities Reinforce material from each lecture
Questions should seem easy & take under 10 min. Means you are doing well
Quizzes
Show you understand material from class Short (20 min?) quiz completed individually
at start Followed by group quiz to help you learn
material Encourage you to stay up on material &
reading Work much less stressful if you stay up to
date If only working right before tests, stress may
be high Covers lectures & reading, so slides alone
may not help
Programmer’s Notebook
Take notes on readings’ important details Course webpage contains helpful templates
to use Notes written by you so easy to understand (Don’t care where you get information from)
Use notebooks during labs & tests Without notebook, no answers to
related questions Can also use book, but book less useful than
own notes
Workings of My Slides
Slides contain many pictures, little text Lectures interesting & fun (or at least better) Provides you with good way to reinforce lessons
Increasingly suck as actual notes Print handout & take notes on the side as we go Make sure to write down steps shown in animations Slides (with notes) usable on tests, labs, class…
Win-win proposition (Except for the lazy ones of you…)
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 homework or projects 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
Coding Help
Will work on testing & debugging skills To get debugging help in CSC213
Method(s) must be commented (when appropriate)
Must use a trace or similar to look for bug Students find own solution once they start
doing this If problem not fixed, gives us starting point to
work Learn to fix your own errors & not rely on the
Professor
Textbooks
Goodrich & Tamassia , Data Structures and Algorithms in Java, 5th Edition, Wiley, 2010.
Same as we used last term Nothing to buy this term! Save money for really nice bribe
Covering remainder of the textbook
Angel Site for Class
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!
Why Do Models Matter?
Client has 2 programmers with different styles
Bob Joe
More about Bob & Joe…
Bob codes like Joe paid attention & like he did in college does it correctly
Starting the Project
Both look at notes from project executive
Bob then writes test cases & starts coding
Joe determines client’s needs in meetings
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $0Total $100,000 $0 $150,000 $0
Project Getting Going
Bob duplicates code, but with minor tweaks Slows progress & requires expensive
reworking Design minimizing code created by Joe
Client’s requirements examined; bugs found & fixed
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,000Total $200,000 $20,000 $250,000 $10,000
Passing the Halfway Point
Bob works from scratch & does not reuse code Lacks plan to incorporate existing code
Joe uses design to write comments & outlines Finds majority of errors during this process When possible, merges classes & simplifies
design%Comple
teBob Joe
Work (in $)
Rework (in $)
Work (in $)
Rework (in $)
20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,000Total $300,000 $40,000 $350,000 $20,000
Project Nearing Completion
Bob’s code is project-specific & cannot be reused Getting concerned as project starts falling
behind Joe writes test cases from his system
design%Comple
teBob Joe
Work (in $)
Rework (in $)
Work (in $)
Rework (in $)
20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,00080% $100,000 $20,000 $100,000 $10,000Total $400,000 $60,000 $450,000 $30,000
Final Rush to the Deadline
Bob cannot describe system to get extra help Completing system takes lots of all-nighters
Joe’s coding is easy with well-defined tests Code could be written by (cheap) trained
monkeys
Bob Joe
Final Accounting
%Complete
Bob JoeWork (in
$)Rework (in
$)Work (in
$)Rework (in
$)20% $100,000 $0 $150,000 $040% $100,000 $20,000 $100,000 $10,00060% $100,000 $20,000 $100,000 $10,00080% $100,000 $20,000 $100,000 $10,000
100% $150,000 $20,000 $50,000 $10,000Total $550,000 $80,000 $500,000 $40,000
What’s The End Result?
Bob barely finishes Occasionally
crashes Close to original
goal
Joe is tanned & rested Reliable & robust Follows design
perfectly
Why These Phases Matter
For Next Lecture
There is reading for Friday Reading available as link on Angel Start talking about how large programs
created
Must bring in 1st part of weekly assignment: Write 5 page paper on what YOU think
makes programmer good Cannot be longer than 2 sentences Be creative