Download COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D.

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Scala (programming language) wikipedia , lookup

Java (programming language) wikipedia , lookup

Go (programming language) wikipedia , lookup

Java performance wikipedia , lookup

Falcon (programming language) wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Python (programming language) wikipedia , lookup

Control flow wikipedia , lookup

Logic programming wikipedia , lookup

Programming language wikipedia , lookup

Java ConcurrentMap wikipedia , lookup

Functional programming wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

Reactive programming wikipedia , lookup

Structured programming wikipedia , lookup

Transcript
COS 333:
Advanced Programming
Techniques
Robert M. Dondero, Ph.D.
Princeton University
1
Agenda

Introductions

General Information

Topics

Assignments

Project (briefly)

Schedule

Policies

The Programming Environment
2
Introductions

Lead Instructor



Bob Dondero
Teaching Assistants

Cole Schlesinger

Rob Dockins (second half only)
Students

Please sign attendance sheet

Please complete questionnaire during class
3
General Information

See "General Information" Web page

Browse to www.cs.princeton.edu

Click on "Academics"

Click on "Course Schedule"

Click on "COS333"
4
General Information

Course description
Advanced Programming Techniques: The practice of programming.
Emphasis is on the development of real programs, writing code but also
assessing tradeoffs, choosing among design alternatives, debugging and
testing, and improving performance. Issues include compatibility,
robustness, and reliability, while meeting specifications. Students will
have the opportunity to develop skills in these areas by working on their
own code and in group projects.
Two 90-minute lectures.
5
General Information

Course goals



Learn programming (tools and techniques) as
practiced by contemporary programmers
Build a bridge from the academic world of
programming to the "real world" of
programming
Help you do well in job interviews!
6
General Information

How?

Lectures

Small assignments



During 1st half
~1.5 weeks per assignment
Larger project

All semester

Work intensifies during 2nd half
7
General Information: Books

Required

The Practice of Programming (Kernighan &
Pike)


In bookstore
On reserve in Eng Library
8
General Information: Books

Recommended

Core Java Programming Volumes I and II
(Horstmann and Cornell)


Python in a Nutshell (Martelli)


On reserve in Eng Library
On reserve in Eng Library
Learning PHP, MySQL & JavaScript (Nixon)

Available through Library as e-book
9
Topics

See "Topics" Web page


Also shows sources of info for each topic
Subject to change...
10
Topics

Programming languages


A course on programming must cover
programming languages!
C, Java, Python



And later PHP, JavaScript, and a little C++
Lectures will hit highlights, show examples,
compare and contrast
Most learning on your own
11
Topics

Databases and database programming

Relational DBs and DBMSs

Relational DB design

The MySQL DBMS

Database programming (Java and Python)
12
Topics

Graphical user interface programming

Components

Layout managers

Event handling

In Java Swing/AWT and Python Tkinter
13
Topics

Concurrent programming

Concurrent processes (C)

Communication between processes (C)

Concurrent threads (Java and Python)

Thread synchronization (Java and Python)

Communication between threads (Java and
Python)
14
Topics

Network programming

Network fundamentals

Network programming at the socket-level

Object serialization

In Java and Python
15
Topics

The Web

Static web programming

HTML

HTTP

(Missing: CSS)
16
Topics

Server-side Web programming

CGI programming (in Java and Python)

Stateful CGI programming





URL rewriting
Hidden form fields
Cookies
Authentication and authorization
Programming the web server (in JSP and
PHP)
17
Topics

XML programming

XML

XML DOM programming

XML SAX programming

In Java and Python
18
Topics

Client-side Web programming

JavaScript

Java Applets

AJAX
19
Topics

Programming paradigms

Structured programming

Object-based programming

Programming with ADTs

Object-oriented programming

Functional programming

Logic programming
20
Topics

Advanced programming language features
(as time allows)

Inheritance

Generics

Namespaces

Exception handling

Component programming

Internationalization
21
Topics

Software engineering

Requirements analysis

Functional analysis

Design (UML, design patterns)

Implementation

Debugging

Testing
22
Topics

Software engineering (cont.)

Evaluation

Maintenance (refactoring)

Management (lifecycle models)

Empirical software engineering
23
Topics

Note:



I am not an expert on all those topics!
Nobody could be an expert on all those
topics!!!
Please contribute when you can
24
Assignments

See "Assignments" Web page

All in teams of two...
25
Assignments

Assignment 1

Regular expressions


Regular expressions, programming
languages, testing
Java and Python
26
Assignments

Assignment 2

Registrar's office app (database version)



Database programming
Modularity
Java or Python
27
Assignments

Assignment 3

Registrar's office app (GUI and networked
version)





Enhancement/redesign of previous
Graphical user interface programming
Multithreaded programming
Network programming
Java or Python
28
Assignments

Assignment 4

Registrar's office app (Web version)



Enhancement/redesign of previous
Server-side Web programming
Java or Python or PHP
29
Assignments

Assignment 5 Possibly! If time!

Registrar's office app (AJAX version)



Client-side web programming
AJAX programming
JavaScript and [Java or Python or PHP]
30
Assignments: Observation

Observation:

Assignments get easier as work on project
ramps up
31
Assignments: Suggestion

Suggestion:

Note "Java track" and "Python track"

How to decide which language?

Which do you like better?





Assignment 1 should help
Which might you use in the future?
Which best supports your project?
Depth (=> Java) vs. breadth (=> Python)?
Can switch, but maybe with backtracking
32
Assignments: Suggestion

Suggestion:

Invest time in Assignment 2; make it modular

Modularity => ease of enhancement
33
Assignments: Suggestion

Suggestion:



Choose your Assignment 2 partner wisely
Difficult to switch for Assignments 3 and 4
(and 5)
Assignment 1 is available now
Project

See "Project" Web page

Highlights:

Teams of 3-5

Three-tier application

Deliverables throughout the semester

Start now

More details in lecture soon
35
Schedule

See "Schedule" Web page; generally...

First half:


Assignments

Lectures that are pertinent to assignments

Decide what to do for project
Second half:

Project

Lectures covering more unconstrained topics
36
Policies

See "Policies" Web page

Lecture attendance

Assignment late submission

Assignment conduct

Electronic communication

Grading: assignments (40%), project
(50%), class participation (10%)
37
Policies



I ask reluctantly and apologetically...
Please don't use computers, phones, etc.
during lectures
Thanks!
38
The Pgmming Environment

For assignments:

Use penguins.cs.princeton.edu cluster


Or, use your own computer



tux and opus
MS Windows, Mac, or Linux
See course instructors for setup help
But, eventually must port to penguins



Use CS MySQL DBMS
Run "submit" command
Make sure your program works for grader 39
The Pgmming Environment

For your project:

Whatever makes sense

Subject to approval of your TA advisor

Must provide a way for us to test your system
40
Pgmming Env Action Items

Required: Make sure you have a CS
account

Log into penguins.cs.princeton.edu



Use a terminal emulator program with ssh
Windows PuTTY, Mac Terminal
If necessary, submit form at
https://csguide.cs.princeton.edu/requests/account

Specify Bash as default shell
41
Pgmming Env Action Items

Recommended: Make sure your default
shell is Bash

"printenv SHELL" should write /bin/bash

If necessary, e-mail [email protected]
42
Pgmming Env Action Items

Recommended: Configure your
environment


Copy .bashrc and .bash_profile files from
/u/cos333 to your home directory
Copy .emacs file from /u/cos333 to your home
directory
43
Pgmming Env Action Items

Required: Make sure you have a MySQL
loginid/password and database

Issue command "mysql loginid --host=publicdb
--user=loginid --port=3306 –password"


Then type your MySQL password
If necessary, submit form at
https://csguide.cs.princeton.edu/requests/db
44
Pgmming Env Action Items

Required: Subscribe to cos333 listserv

Browse to this page:
https://lists.cs.princeton.edu/mailman/listinfo/cos333
and follow instructions

Please subscribe using your full first and last
names
45
Summary

Introductions

General Information

Topics

Assignments

Project (briefly)

Schedule

Policies

The Programming Environment
46