CMSC433: Programming Language Technologies and Paradigms - Fall 2007 - Prof. William Pugh, Study Guides, Projects, Research of Programming Languages

The details of the cmsc433 course offered at the university of maryland, college park in fall 2007. The course focuses on making students better programmers by deconstructing programming problems and solving them in an object-oriented style. Topics include java and oo design patterns, programming techniques and tools, refactoring, security, concurrency, map reduce programming, distributed programming, and more. Students are required to complete six projects and are encouraged to participate in research projects and open source contribution projects.

Typology: Study Guides, Projects, Research

Pre 2010

Uploaded on 07/30/2009

koofers-user-ngy
koofers-user-ngy 🇺🇸

10 documents

1 / 28

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CMSC433, Fall 2007
Programming Language Technologies and
Paradigms
Introduction
Bill Pugh
August 30th, 2007
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Partial preview of the text

Download CMSC433: Programming Language Technologies and Paradigms - Fall 2007 - Prof. William Pugh and more Study Guides, Projects, Research Programming Languages in PDF only on Docsity!

CMSC433, Fall 2007

Programming Language Technologies and

Paradigms

Introduction

Bill Pugh

August 30th, 2007

Important 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 survey

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 development 4

Topics

  • 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/testing

More 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 many

Texts

Projects

• 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.

Project 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 resources

Marmoset 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 participate

Open 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 possible

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

  • Plenty of stuff for FindBugs
  • Ask around (faculty, others)

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

Grading

% each % total

Homeworks? varies 14 Projects 6 7 42 Mid-terms 1 17 17 Final 1 27 27

First 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 5th