* 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 csstaff@cs.princeton.edu 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
 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                            