csc 213 – large scale programming prof. matthew hertz wtc 207d / 888-2436 [email protected]
TRANSCRIPT
Objectives Met in CSC213 Design computational solutions
Specify, design, implement, and test a program of at least 1000 lines Design and implement a simple GUI Decompose a problem into logically grouped subprograms Develop and analyze algorithms
Program well Work independently Code in a high-level language Debug a program Document a program Write and use a test plan Write recursive algorithms, greedy algorithms, & divide-and-conquer algorithms
Organize data for effective use Use fundamental data structures Implement data structures Understand file structures, storage, and indexes
Understand the role of computing and the computer professional Present or explain ideas Weigh different solutions and explain or argue why one was preferable Work in teams
High-level Objectives
Have fun Become an effective programmer via better
understanding of the development process Continue developing “toolbox” of solutions
Expectations of Me
Lectures are 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 Will not face the same question again Answer meaningless if just a lucky guess Mastery means explaining how & why
Class participation is vital Cannot modify approach until I know what the
problem is
Adult Learning
Students read material before class Begin class with opportunity to ask questions (Short) lecture explains key topics & ideas
Provides 2nd opportunity to see material Prevents long, boring lectures
Students work in teams solving problems Make sure you actually understand material (Nearly) Penalty-free chance to make mistakes
Expectations of You
Work hard Come to class prepared Be a good teammate Ask for help early and often
Let me know what you are thinking
Attendance & Deadlines
Attendance is mandatory If you must miss a class, talk to me ahead of time You are responsible for every class Best way to earn a poor grade: skip class
Work must be submitted by time it is due Late work will not be accepted Talk to me as soon as you know you cannot make
a deadline
Attack of Real Life
When life happens… May need to get a note from the Dean Be prepared to show documentation Talk to me when you can
We will find fair & workable solution
Course Grading
Midterm 21%
Final 32%
Projects 24%
Daily Activities 5%
Programmer’s Notebook 3%
Reading Quizzes 3%
Program Portfolio 12%
Grade spreadsheet available on course web page Midterm given on Mar. 26th
Final covers entire semester 6 programming projects during semester
Goals for Other Graded Items
CSC212/213 have almost too much material Do not want to burn everyone out But really important to learn… …and equally important to learn well
Build skills used by “real” programmers Often have references nearby to look things up Write Cliff’s Notes of most important details
Programmer’s Notebook
Take notes on readings’ most important details for each lecture Template for notes on course webpage Written in manner that makes most sense to you (Don’t care where you get information from)
Will collect notebooks twice during term Grade will be on how complete notes are
Used on midterm & final along with book Not allowed to include my slides in notebook
Reading Quizzes
Classes may begin with quiz on day’s reading Limited to details on notebook template… …and will be open notebook
Unless asked, will not cover material on template in detail Leaving time to focus on more complex issues
Gets rid of need for weekly assignments (I hope)
Notebook also useful reference in future classes
Program Portfolio
Opportunity to show off programming skills You must submit all 6 assignments as normal Choose 3 best for further scrutiny Will be due on last day of the term
Document entire programming process Shows how you arrived at the final product Must include drafts program went through
Gives you chance to perfect a program Grading tougher than normal assignments But also get much longer to complete
Grading Rubric
“A” Know material Few small mistakes
“B” Good understanding of topic Miss a few “boundary cases”
“C” Know idea, fuzzy on details Miss large number of
boundary cases -or- Solution is close, but not
quite correct
“D” Vague on idea, details are a
blur Only solves general case -or- Solution usually incorrect -or- Solution rarely crashes
“F” Started day before its due Solution rarely correct -or- Crashes regularly -or- Code cannot compile
Learning Styles
People have different ways in which they best take in and process information
Important for each student to discover what is best for them
Will try presenting material visually, verbally, written, and kinetically Let me know what works for you Let me know what DOESN’T work for you
Collaboration
Fellow students are a great resource Different styles of learning yields multiple levels of
understanding Get together, discuss material, and study Answer lingering questions you have Clarify what a problem is asking (Most of you) take many classes together, may as
well start interacting
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 Never seen 2 people submit similar solutions
when they actually wait Should not be reviewing work once its started When in doubt, ask me
Coding Help
New policy for CSC111, CSC212, CSC213 Minimum requirements for debugging help
Course includes focus on testing/debugging To get debugging help in CSC213:
Method(s) must be javadoc’d Must have test cases for method(s) Must have performed some trace looking for bug
Trace can either be on paper or via System.err
Textbook
Michael Goodrich and Roberto Tamassia:Data Structures and Algorithms in Java, 4th edition, Wiley, 2006.
Not available at bookstore, but is on web Will cover about 50% of the textbook
CSC212 looks at linear data structures CSC213 looks at other concepts: trees and
graphs
Course Website
http://cs.canisius.edu/~hertzm/csc213s07
Contains slides, announcements, other important information
Does not replace actually attending class
Personal Information SheetName: Matthew HertzYear: 2nd yearMajor: Computer SciencePrevious Computer Experience:
A in CS2 at MBHSI am in this course because:
Enjoy helping novice coders and seeing them develop and growMy goals for this semester are…
•Include better tests for IM project•Develop better problems•Beat my wife at darts
For Next Lecture
Think about what you think differentiates a good programmer from a great programmer 1st item for Programmer’s Notebook: Write 2 – 3
paragraphs convincing me of your opinion