* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D.
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
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