1!CMSC433, Spring 2009 Programming Language Technologies and Paradigms Introduction Adam Porter Jan 27, 2009 2 Course Goal To make you a better programmer • Deconstruct relevant programming problems • Solve them in an object-oriented style, focusing on – Reusability – Maintainability (clarity) – Design – (Performance is secondary)2!3 Approach • Will use the Java programming language exclusively – But the ideas apply to other languages too • Sequential object-oriented (OO) programming – Basic principles and tools, and – Design patterns to improve reusability and reliability • Concurrent OO programming – Emphasis: shared-memory multi-threading (Java Thread class) – Also distributed message passing (e.g., RMI) 4 Topics • Java review, new features in Java 5.0/6.0 • Programming techniques and tools – Specifications and testing • Design – Design principles, software architecture & design patterns • Concurrency – Concurrent programming in Java – Design patterns • Distributed programming • Special topics – TBD3!5 Style • Interaction – This is your course: what do you want to learn? • Discussion – Not just professor/TA to student, but student to student, with regard to ideas, techniques, and solutions • Learn by doing – If you don’t put effort into the programming projects, you will learn very little 6 Texts4!7 Additional reference materials • Lots of resources – many on-line and free • Will be pointed out during semester • Find your own – If you copy code from any resource, acknowledge it 8 Projects • Six total projects – Will sometimes extend project templates we provide, but generally will write from scratch • Focus on networked applications – Encourages modular, abstract design – Admits natural use of concurrency and distribution – Relevant in our connected society5!9 Project Submission • Projects due at Midnight on due date – By Unix time of day – You must submit a good-faith effort • You can be failed for the course if you do not – Late submission up to 9am the next morning • Score is multiplied by 0.8 (it is generally not in your best interest to submit late) – Only last submission will be graded! 10 Project grading and class accounts • We will use the SubmitServer system for project submission • Linux lab accounts available – Can use your own campus accounts for course work • Course grades and accounts will be managed using grades.cs.umd.edu – All linked from course web page resources6!11 Software • Will be using: – Java 1.5+ – Eclipse 3.1+ IDE (optional) – Junit 4+ 12 Open Source Contribution Project • One special project: (grade included in final exam) – make a contribution to a large open source software project – large meaning 40,000+ lines of code • Everyone has to pick something different – could be different contributions to same project7!13 A simple contribution: bug fix • Find a large Java App – Download it, build it, run it. • Run FindBugs over it • Understand, document code defect • Write test cases • Fix defect • Submit your work to the project 14 More aggressive contributions • Find a problem report in a bug database – Figure out what the defect is – document and fix, as before • Add a feature to an open source project – e.g., “Mozilla’s new HTML editor has support for ftp, but not sftp -- add sftp support” -- Jeff Hollingsworth – Plenty of stuff for FindBugs – Ask around (faculty, others)8!15 Grading of open source project • Project intended to get your feet wet with real software • Grade not based on size of contribution, but on how seriously you take it • Just blasting email to the developers list (“Hey, line 45 of FooBar.java contains a bug”) won’t count for much • For overachievers, prizes for anyone who does a significant contribution 16 Exams • One midterm: March 12th • Final: Monday May 18, 10:30am-12:30pm9!17 Grading # % each % total Projects 5 10 50 Mid-terms 1 20 20 Final 1 30 30 18 Discussion and Questions • Web forum – Web-based discussion pages – Can post to from off-campus – Linked from course web page • Post questions, pointers to resources, test cases. – Will be monitored by professor and TA – Don’t cross the line! Help on ideas of projects; never post code or pseudocode that gives away the exact approach.10!19 Office Hours • Professor Adam Porter, [email protected] – 4125 AVW • TA: Nima Asadi, [email protected] – Office hours in 1112 AVW • All hours posted on web page – http://www.cs.umd.edu/class/Spring2009/cmsc433 – Or set up an appointment 20 Excused Absences • Religious holidays or other personal conflicts – Let us know as soon as you get the project • Medical and other emergencies – Must provide documentation stating what dates/times you were incapacitated – Self reporting is not sufficient11!21 Stay up to Date http://www.cs.umd.edu/class/spring2009/cmsc433 Contains: • Announcements • Lecture notes • Project assignments • Resources • And
View Full Document