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

Similar documents
COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques

CSCI 201L Syllabus Principles of Software Development Spring 2018

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

S.No Description 1 Allocation of subjects to the faculty based on their specialization by the HoD 2 Preparation of college Academic Calendar and

CS 3230 Object Oriented UI Development With Java Syllabus

Computer Science Department

CMPE 280 Web UI Design and Development

Outline. Databases and DBMS s. Recent Database Applications. Earlier Database Applications. CMPSCI445: Information Systems.

CSC 443: Web Programming

CMPE 280 Web UI Design and Development

ITM DEVELOPMENT (ITMD)

Course Web Site. 445 Staff and Mailing Lists. Textbook. Databases and DBMS s. Outline. CMPSCI445: Information Systems. Yanlei Diao and Haopeng Zhang

CS 4230 Java Application Development Syllabus

CS 4230 Java Application Development Syllabus

SIR C.R.REDDY COLLEGE OF ENGINEERING, ELURU DEPARTMENT OF INFORMATION TECHNOLOGY LESSON PLAN

CMPSCI445: Information Systems

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

San José State University Department of Computer Science CS-174, Server-side Web Programming, Section 2, Spring 2018

CS 241 Data Organization. August 21, 2018

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

CS Final Exam Review Suggestions - Spring 2018

Computer Science. Computer Science 211. Degrees and Certificates Awarded. A.S. Computer Science Degree Requirements. Program Student Outcomes

TTh 9.25 AM AM Strain 322

AIM. 10 September

GET 433 Course Syllabus Spring 2017

Syllabus INFO-GB Design and Development of Web and Mobile Applications (Especially for Start Ups)

Web Programming Fall 2011

32549/31242 Advanced Internet Programming

COMPUTER INFORMATION SYSTEMS PROGRAMS

Programming the World Wide Web by Robert W. Sebesta

Kingdom of Saudi Arabia Ministry of Higher Education College of Computer & Information Sciences Majmaah University. Course Profile

CIS 3308 Web Application Programming Syllabus

CIS 408 Internet Computing (3-0-3)

224 Computer Science. A.S. Degree Requirements. Department Offices. Faculty and Offices. Emeritus Faculty. Degrees and Certificates Awarded

Course and Unix Intro

CS 3030 Scripting Languages Syllabus

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

Computer Science 209. A.S. Degree Requirements. Department Offices. Faculty & Offices. Emeritus Faculty. Degrees & Certificates Awarded

CS 3030 Scripting Languages Syllabus

AE Computer Programming for Aerospace Engineers

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

AN ISO 9001:2008 CERTIFIED COMPANY ADVANCED. Java TRAINING.

INFSCI 1017 Implementation of Information Systems Spring 2017

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

Hackveda Appsec Labs Java Programming Course and Internship Program Description:

CS193j Programming in Java

3. Course Outlines: Specific Objectives Contents Teaching Hours understand the basic concept of java programing. 1. Introduction to Java Language

Programming Microsoft Sql Server 2012 Developer Reference Paperback

20480C: Programming in HTML5 with JavaScript and CSS3. Course Code: 20480C; Duration: 5 days; Instructor-led. JavaScript code.

CSCI 6312 Advanced Internet Programming

Syllabus Course Number: CS 412 Course Title: Web and Database Programming

Course and Contact Information. Course Description. Course Objectives

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

(p t y) lt d. 1995/04149/07. Course List 2018

Server-Side Web Programming: Python (Part 1) Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

INF 315E Introduction to Databases School of Information Fall 2015

Spring 2018 El Camino College E. Ambrosio. Course Syllabus

Computer Science. Computer Science 213. Faculty and Offices. Degrees, Certificates and Awards. AS Computer Science Degree Requirements

Computer Science. Computer Science 207. Faculty and Offices. Degrees and Certificates Awarded. AS Computer Science Degree Requirements

TUTORIAL QUESTION BANK

Introduction to Programming System Design CSCI 455x (4 Units)

Operating Systems, Spring 2015 Course Syllabus

San José State University College of Science / Department of Computer Science Introduction to Database Management Systems, CS157A-3-4, Fall 2017

Syllabus of ENPM 691: Secure Programming in C

IT6503 WEB PROGRAMMING. Unit-I

Web Programming Spring 2010

Course and Contact Information. Course Description. Course Objectives

Faculty Guide to Blackboard

INFS 2150 (Section A) Fall 2018

COWLEY COLLEGE & Area Vocational Technical School

DIABLO VALLEY COLLEGE CATALOG

Basics of Java Programming CS129 LTPC:

N/A. Yes. Students are expected to review and understand all areas of the course outline.

CS 470G Introduction to Operating Systems

Course title: WEB DESIGN AND PROGRAMMING

Ministry of Higher Education and Scientific Research

CENG 256 Internet Programming Draft

Advanced Web Programming (17MCA42)

Certified Selenium Professional VS-1083

Introduction To Programming With Java: A Problem Solving Approach Epub Gratuit

Standard 1 The student will author web pages using the HyperText Markup Language (HTML)

Basic Web Application Development Spring credit hour Student Taught (Satisfactory/Unsatisfactory)

MSc(IT) Program. MSc(IT) Program Educational Objectives (PEO):

Alkan University College Student Information Management System

San Jose State University - Department of Computer Science

CPS352 - DATABASE SYSTEMS. Professor: Russell C. Bjork Spring semester, Office: KOSC 242 x4377

ITT Technical Institute. SD3120T Programming in Open Source with LAMP Onsite and Online Course SYLLABUS

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

Web Engineering. Introduction. Husni

Edge Foundational Training

Project 3 Students Choice of Native Apps. each milestone s deadline is noon see cs164.net/expectations for each milestone s expectations

Database Security MET CS 674 On-Campus/Blended

Descriptions for CIS Classes (Fall 2017)

Tennessee. Trade & Industrial Course Web Page Design II - Site Designer Standards. A Guide to Web Development Using Adobe Dreamweaver CS3 2009

COMPUTER INFORMATION SYSTEMS

DB2 Express-C University Program

ITT Technical Institute. SD3240T Creating Websites in the LAMP Environment Onsite and Online Course SYLLABUS

PONDICHERRY UNIVERSITY PLACEMENT CELL

CPET 581 E-Commerce & Business Technologies. Topics

Transcription:

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 Larger project During 1 st half ~1.5 weeks per assignment All semester Work intensifies during 2 nd 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) On reserve in Eng Library Python in a Nutshell (Martelli) 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 Java and Python Regular expressions, programming languages, testing 26

Assignments Assignment 2 Registrar's office app (database version) Java or Python Database programming Modularity 27

Assignments Assignment 3 Registrar's office app (GUI and networked version) Java or Python Enhancement/redesign of previous Graphical user interface programming Multithreaded programming Network programming 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 tux and opus Or, use your own computer 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