csc 213 – large scale programming

34
CSC 213 – LARGE SCALE PROGRAMMING Prof. Matthew Hertz WTC 207D / 888-2436 [email protected]

Upload: fagan

Post on 15-Feb-2016

33 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: CSC 213 –  Large Scale Programming

CSC 213 – LARGE SCALE PROGRAMMING

Prof. Matthew HertzWTC 207D / 888-2436 [email protected]

Page 2: CSC 213 –  Large Scale Programming

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

Page 3: CSC 213 –  Large Scale Programming

High-level Objectives

Improve coding ability Learn skills needed to develop larger

systems Master tricks used to solve common

problems Have fun

Page 4: CSC 213 –  Large Scale Programming

Expectations of Me

Lectures prepared and organized Give interesting, thoughtful, fun

problems Be (reasonably) available to answer questions Be honest and forthright

Page 5: CSC 213 –  Large Scale Programming

Why Most Classes Suck

Page 6: CSC 213 –  Large Scale Programming

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

Page 7: CSC 213 –  Large Scale Programming

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

Page 8: CSC 213 –  Large Scale Programming

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

Page 9: CSC 213 –  Large Scale Programming

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

Page 10: CSC 213 –  Large Scale Programming

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

Page 11: CSC 213 –  Large Scale Programming

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

Page 12: CSC 213 –  Large Scale Programming

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

Page 13: CSC 213 –  Large Scale Programming

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

Page 14: CSC 213 –  Large Scale Programming

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

Page 15: CSC 213 –  Large Scale Programming

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

Page 16: CSC 213 –  Large Scale Programming

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

Page 17: CSC 213 –  Large Scale Programming
Page 18: CSC 213 –  Large Scale Programming

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…)

Page 19: CSC 213 –  Large Scale Programming

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

Page 20: CSC 213 –  Large Scale Programming

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

Page 21: CSC 213 –  Large Scale Programming

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

Page 22: CSC 213 –  Large Scale Programming

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

Page 23: CSC 213 –  Large Scale Programming

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!

Page 24: CSC 213 –  Large Scale Programming

Why Do Models Matter?

Client has 2 programmers with different styles

Bob Joe

Page 25: CSC 213 –  Large Scale Programming

More about Bob & Joe…

Bob codes like Joe paid attention & like he did in college does it correctly

Page 26: CSC 213 –  Large Scale Programming

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

Page 27: CSC 213 –  Large Scale Programming

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

Page 28: CSC 213 –  Large Scale Programming

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

Page 29: CSC 213 –  Large Scale Programming

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

Page 30: CSC 213 –  Large Scale Programming

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

Page 31: CSC 213 –  Large Scale Programming

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

Page 32: CSC 213 –  Large Scale Programming

What’s The End Result?

Bob barely finishes Occasionally

crashes Close to original

goal

Joe is tanned & rested Reliable & robust Follows design

perfectly

Page 33: CSC 213 –  Large Scale Programming

Why These Phases Matter

Page 34: CSC 213 –  Large Scale Programming

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