DOC PREVIEW
UMD CMSC 433 - CMSC 433 Introduction

This preview shows page 1-2-3-26-27-28 out of 28 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 28 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CMSC433, Fall 2007 Programming Language Technologies and ParadigmsIntroductionBill PughAugust 30th, 20072Important points• You should have accounts on– http://grades.cs.umd.edu/– http://submit.cs.umd.edu– and have received email about a SurveyMonkey survey• If you just added the course, I might not have taken care of this– please contact me promptly• Please complete the survey3Course GoalTo make you a better programmer• Deconstruct relevant programming problems• Principles and concepts– learning specific APIs a side effect, not a primary goal• Solve them in an object-oriented style, focusing on– Reusability– Maintainability (clarity)– Design– (Performance is secondary)A little about me• Worked on revising the specification of threads in Java– complete rewrite of spec, now part of Java 5 spec• Lead on FindBugs, open source static analysis tool for finding errors in Java programs– 250,000+ lines of code– downloaded 400,000+ times, used by many major tech and finacial firms• Spent past two summers working with Google and other bay area tech companies– understanding how to incorporate static analysis into software development45Topics• Review of Java and OO design patterns– Regular expressions and patterns– TCP Sockets– Effective Java– Decorator pattern– Factory pattern– Builder pattern• Programming Techniques and Tools– Testing– Mock Objects– Assertions/Invariants– Source code version control systems– Build systems, project automation, continuous integration– Static/dynamic tools for code quality/testing6Topics, continued• Refactoring (1 week)– Philosophy– Code smells– Refactoring patterns• Security (1 week)7More topics• Concurrency (3 weeks)– Intro to Concurrency– Threads– Java threads– Java memory model– Synchronization: locking (synchronized) and signaling (wait/notify)– Design forces (safety, liveness/deadlock, performance, reusability) – Java 5 concurrency– Threaded programming patterns• Map reduce programming (2 week)• Distributed Programming (2 week)• Too many8Texts9Additional 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 it10Projects• Six total projects– Will extend project templates we provide• Projects due at 6pm on due date– via the submit server– You must submit a good-faith effort• You can be failed for the course if you do not– Late submission up to sunrise the next morning• Score is multiplied by 0.811Project grading and class accounts• We will use the SubmitServer system for project submission and testing– Linux lab account for cvs access only– Use your own computers or campus accounts for course work• see me if this is a problem• Course grades will be done using grades.cs.umd.edu– also used to distribute linuxlab accounts• All linked from course web page resources12Software• Will be using:– Java 5.0+– Eclipse 3.3 IDE• Including Clover code coverage plug-in– JUnit– FindBugs– Ant13Marmoset Research Project• You will be asked to participate in the Marmoset research project– gives us permission to study your work on programming projects for research purposes• research data is anonymized• Other than signing a consent form, you don’t have to do anything different to participate14Open Source Contribution Project• One special project:– 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 project– team contribution efforts possible15A 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 project16More 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– Plenty of stuff for FindBugs– Ask around (faculty, others)17Grading 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 contribution18Exams• One midterm• Final19Grading#% each% totalHomeworks?varies14Projects6742Mid-terms11717Final1272720First homework / Project 0: Binary search• Implement binary search in an array:public static int binarySearch(int a[], int x) – return i s.t. a[i] == x if such an element exists– return -1 otherwise• Due next Wednesday, Sept 5th21Why binary search?• I've heard several people say that when they've asked experienced developers to do this, most have bugs in their implementation• Heard one person say they use this in job interviews, with similar results22Doing the homework• Should not take you more than an hour– Don't wait until next Wednesday, 5pm to get started• Try doing it first without any test cases• submit your project before testing– just to satisfy my curiosity; you'll have plenty of opportunities to resubmit it23Discussion and Questions• Based on early survey results, looks like forums.cs.umd.edu– Web-based discussion pages– Can post to from off-campus– Linked from course web page• Post questions to projects, pointers to resources, etc.– 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.24Office Hours• Professor Bill Pugh, pugh at cs.umd.edu– 4131 AVW• TAs: David An – Office hours in 1112 AVW• All hours will be posted on web page– http://www.cs.umd.edu/class/fall2007/cmsc433– Or set up an appointment25Excused 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 sufficient26Stay up to Datehttp://www.cs.umd.edu/class/fall2007/cmsc433Contains:• Announcements• Lecture notes• Project assignments• Resources• And more!27Readings for next week• JUnit• How


View Full Document

UMD CMSC 433 - CMSC 433 Introduction

Documents in this Course
Trace 1

Trace 1

62 pages

Reflection

Reflection

137 pages

Testing

Testing

25 pages

Paradigms

Paradigms

10 pages

Testing

Testing

17 pages

Java RMI

Java RMI

17 pages

Java RMI

Java RMI

17 pages

Java RMI

Java RMI

17 pages

Trace 1

Trace 1

46 pages

Jini

Jini

4 pages

Final

Final

15 pages

Java RMI

Java RMI

13 pages

Testing

Testing

16 pages

Load more
Download CMSC 433 Introduction
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view CMSC 433 Introduction and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view CMSC 433 Introduction 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?