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

Similar documents
COS 333: Advanced Programming Techniques

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

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

CSCI 201L Syllabus Principles of Software Development Spring 2018

ITM DEVELOPMENT (ITMD)

CSC 443: Web Programming

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

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

COS 333: Advanced Programming Techniques

Web Programming Fall 2011

CMPE 280 Web UI Design and Development

CMPE 280 Web UI Design and Development

Programming Microsoft Sql Server 2012 Developer Reference Paperback

CS 3230 Object Oriented UI Development With Java Syllabus

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

INFSCI 1017 Implementation of Information Systems Spring 2017

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

CIS 3308 Web Application Programming Syllabus

CIS 408 Internet Computing (3-0-3)

Alkan University College Student Information Management System

CIS 086 : Week 1. Web Development with PHP and MySQL

CSC 261/461 Database Systems. Fall 2017 MW 12:30 pm 1:45 pm CSB 601

i>clicker GO Student Manual

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

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

The course also includes an overview of some of the most popular frameworks that you will most likely encounter in your real work environments.

Descriptions for CIS Classes (Fall 2017)

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

CMPSCI445: Information Systems

San José State University Department of Computer Science CS151, Object Oriented Design, Section 04, Fall, 2016 (42968)

Read & Download (PDF Kindle) Java Illuminated: An Active Learning Approach

CS 241 Data Organization. August 21, 2018

CSCI 6312 Advanced Internet Programming

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

Grading: Test 1 25% ---- Test 2 25% ---- Best 2 Final Exam 25% ---- Project 25% Assignments/labs 25%

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

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

CS 4230 Java Application Development Syllabus

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

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

Programming the World Wide Web by Robert W. Sebesta

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

CS 4230 Java Application Development Syllabus

Computer Science Department

CS Final Exam Review Suggestions - Spring 2018

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

Cleveland State University Department of Electrical and Computer Engineering. CIS 408: Internet Computing

COMPUTER INFORMATION SYSTEMS PROGRAMS

Course and Contact Information. Course Description. Course Objectives

FULL STACK FLEX PROGRAM

While waiting for the lecture to begin, please complete. the initial course questionnaire.

INF 315E Introduction to Databases School of Information Fall 2015

Server-Side Web Programming: Java. Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

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

Content Management Systems. Week 14 LBSC 671 Creating Information Infrastructures

CSE 498 CSE Courses and Skills Inventory Fall Name:

CSE 344 JANUARY 3 RD - INTRODUCTION

Course and Contact Information. Course Description. Course Objectives

INFS 2150 (Section A) Fall 2018

CS 3270 Mobile Development for Android Syllabus

Tecnológico de Monterrey Coding Boot Camp LIVE ONLINE PROGRAM

Using Data Science to deliver Workforce & Labour Market Insights. Gary Gan Co-Founder, JobKred

FULL STACK FLEX PROGRAM

Software. Full Stack Web Development Intensive, Fall Lecture Topics. Class Sessions. Grading

JavaScript and MVC Frameworks FRONT-END ENGINEERING

WELCOME TO CS 16! Enrollment status: 117/ Problem Solving with Computers-I

ECE 3574: Applied Software Design

15-411/ Compiler Design

San Jose State University - Department of Computer Science

Object-Oriented Data Structures Using Java Ebooks Free

Byte Academy. Python Fullstack

Acceptance Test. Smart Scheduling. Empire Unlimited. Requested by:

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

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

Syllabus of ENPM 691: Secure Programming in C

CSE 5236 Project Description

Smartphone Programming. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

SUBJECT OUTLINE DETAILS

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

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

Read & Download (PDF Kindle) Modern Multithreading: Implementing, Testing, And Debugging Multithreaded Java And C++/Pthreads/Win32 Programs

LIVE ONLINE PROGRAM UNIVERSITY OF ARIZONA CODING BOOT CAMP CURRICULUM OVERVIEW

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


Web Engineering. Introduction. Husni

Faculty Guide to Blackboard

CS240: Programming in C

FULL STACK FLEX PROGRAM

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

Operating Systems CMPSC 473. Introduction January 15, Lecture 1 Instructor: Trent Jaeger

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

SYLLABUS. Departmental Syllabus. Departmental Syllabus. Departmental Syllabus. Departmental Syllabus. Departmental Syllabus

When learning coding, be brave

Upload to your web space (e.g., UCSC) Due this Thursday 4/8 in class Deliverable: Send me an with the URL Grading:

CS 235AM, Mobile Application Development: Android Spring 2016

FULL STACK FLEX PROGRAM

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

CMPT 354: Database System I. Lecture 1. Course Introduction

National College of Ireland BSc in Computing 2017/2018. Deividas Sevcenko X Multi-calendar.

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

Transcription:

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

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 2

Introductions Lead Instructor Bob Dondero Bob 3

Introductions Teaching Assistant Jerry Yu-Chieh Wei 4

Introductions Teaching Assistant Akash Kapoor 5

Introductions Students Please sign attendance sheet Please complete survey during class 6

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 7

Course Description 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. 8

Course Goal 1 Course goal 1: Three-tier programming Help you to become a (better) three-tier programmer Help you learn how to (better) develop networked apps that consist of: (1) A data management tier (2) A presentation tier (3) Application processing tier 9

Course Goal 2 Course goal 2: Software engineering Help you to become a (better) software engineer Become (more) proficient at requirements analysis, design, programming, debugging, testing, evaluation, maintenance, methodologies 10

Course Benefits Course benefits Help you to bridge the gap between the academic world of programming and the real world of software engineering Help you to get a job! 11

Course Strategy How? Lectures Assignments 4 of them ~2 weeks per assignment Project All semester Inevitably, work will intensify near end of course 12

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 13

Course Website Course website Browse to www.cs.princeton.edu Click on Academics Click on Course Schedule Click on COS333 General Information, Topics, Assignments, Project, Schedule, Policies pages 14

Lectures Lectures Slides & code available through Topics web page Suggestion: Bring hard copy of slides Hard copy of code will be distributed Lecture etiquette Please don t use electronic devices during lectures 15

Piazza Piazza http://piazza.com/class#fall2017/cos333 Use for: Issues on assignments that are of general interest and that do not reveal your work Issues on your project that are of general interest 16

Piazza Piazza etiquette Study provided material before posting question Read all (recent) Piazza threads before posting question See course Policies page for details 17

Email Email to cos333instructors@lists.cs.princeton.edu Received by all 3 instructors (only) Use for: Issues on assignments that are not of general interest Issues on assignments that involve revealing your work Issues on your project that are not of general interest 18

Email Email to an individual instructor See General Information web page for email addresses Use for: Issues that are more personal in nature 19

Office Hours Instructor office hours See General Information web page for office hours and locations Lead instructor: office hours throughout entire semester TAs: office hours in first half, team meetings in second half 20

Books Required The Practice of Programming (Kernighan & Pike) In bookstore On reserve in Eng Library 21

Books Recommended Core Java Volumes I and II (10 th edition) (Horstmann) Available as e-books through Princeton library 22

Books Recommended Python in a Nutshell (3 rd Edition) (Martelli, Ravenscroft, and Holden) Available as e-book through Princeton library 23

Books Recommended Learning PHP, MySQL & JavaScript (4 th Edition) (Nixon) Available as e-book through Princeton library 24

Books Recommended Beginning Software Engineering (Stephens) Available as e-book through Princeton library 25

Other Resources See links on Topics web page StackOverflow website will be particularly helpful 26

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 27

Topics See Topics web page Subject to change... 28

Topics Pgmming languages A course on pgmming must cover pgmming languages! Java and Python And later PHP, JavaScript, and a little C and C++ Lectures will hit highlights, show examples, compare and contrast Most learning on your own [Take poll] 29

Topics Database programming Relational DBs and DBMSs Relational DB design The SQLite DBMS Database programming Impl 1: Java Impl 2: Python [Take poll] 30

Topics Version control systems [Take poll] 31

Topics Graphical user interface pgmming Components Layout managers Event handling Impl 1: Java Swing Impl 2: Python Tkinter [Take poll] 32

Topics Network programming Network fundamentals Network programming at the socket-level Object serialization Impl 1: Java Impl 2: Python [Take poll] 33

Topics Web programming HTML HTTP (Missing: CSS) Impl 1: Java Impl 2: Python 34

Topics Server-side web pgmming in Python Common Gateway Interface (CGI) programming Fast CGI programming WSGI programming The Bottle web app framework Impl: Python + Bottle [Take poll] 35

Topics Server-side web pgmming in Java The Spark web app framework The Apache Velocity template engine Impl: Java + Spark + Velocity [Take poll] 36

Topics Server-side web pgmming in PHP Impl: PHP [Take poll] 37

Topics Client-side web pgmming Client-side impl: JavaScript + AJAX Server-side impl 1: Python + Bottle Server-side impl 2: Java + Spark + Velocity Server-side impl 3: PHP [Take poll] 38

Topics Security issues in web pgmming Authentication Form-based, basic, CAS Secure storage of passwords Secure data transmission Impl 1: Python + Bottle Impl 2: Java + Spark + Velocity Impl 3: PHP 39

Topics Concurrent programming Concurrent processes Communication between processes Impl: C Concurrent threads Thread synchronization Communication between threads Impl 1: Java Impl 2: Python [Take poll] 40

Topics (If time) XML and JSON pgmming XML programming DOM programming SAX programming JSON programming Impl 1: Java Impl 2: Python [Take poll] 41

Topics (If time) Smartphone pgmming Client-side impl: Java + Android Server-side impl: Python + Bottle + Git + Heroku [Take poll] 42

Topics Programming paradigms Structured programming Object-based programming Programming with ADTs Object-oriented programming Functional programming Logic programming Impl: C++ 43

Topics Software engineering Requirements analysis Design (UML, design patterns) Programming Debugging Testing Evaluation Maintenance (refactoring) Methodologies 44

Topics Note: I am not an expert on all those topics! Nobody could be an expert on all those topics!!! Please feel free to contribute when you can 45

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 46

Assignments See Assignments web page Goal: Give you hands-on experience with baseline/ simple technologies Teams of two strongly preferred 47

Assignments Assignment 1 Registrar s office app (database version) Database programming Modularity Option 1: Java Option 2: Python 48

Assignments Assignment 2 Registrar s office app (GUI and networked version) Enhancement/redesign of previous Graphical user interface programming Multithreaded programming Network programming Option 1: Java + Swing Option 2: Python + Tkinter 49

Assignments Assignment 3 Registrar s office app (web version) Enhancement/redesign of previous Server-side web programming Option 1: Python + Bottle Option 2: Java + Spark + Velocity Option 3: PHP 50

Assignments Assignment 4 Registrar s office app (AJAX version) Enhancement/redesign of previous Client-side web programming Option 1: JavaScript + AJAX + Python + Bottle Option 2: JavaScript + AJAX + Java + Spark + Velocity Option 3: JavaScript + AJAX + PHP 51

Assignment Suggestions Suggestion: Invest time in Assignment 1; make it modular Modularity => ease of enhancement Observation: Assignments get easier as work on project ramps up Iff you use proper modularity 52

Assignment Suggestions Suggestion: When deciding which langs to use, consider: Which better supports your project? Which might you use in the future? Which do you like? 53

Assignment Suggestions Suggestion: When deciding which langs to use, if your goal is to increase: Depth of knowledge, then maybe: Assignment 1, 2, 3, 4: Java Breadth of knowledge, then maybe: Assignment 1, 2: Python Assignment 3, 4: PHP 54

Assignment Suggestions Suggestion: Difficult to switch/merge/split partners between assignments So, choose your Assignment 1 partner wisely Assignment 1 is available now 55

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 56

Project See Project web page Teams of 3-5 Three-tier application Deliverables throughout the semester Start now More details in lecture soon 57

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 58

Schedule See Schedule web page; generally... First half: Assignments 1, 2, 3; related lectures Start project Second half: Assignment 4; related lectures Lectures on more unconstrained topics Finish project 59

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 60

Policies See Policies web page Lecture policies Project policies Assignment policies Grading: Assignments (40%) Project (50%) Class participation (10%) 61

Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 62

Computing Env: General Action: Subscribe to the cos333 Fall 2017 Piazza account Browse to this page: http://www.piazza.com/class#fall2017/cos333 Follow the instructions to subscribe Please subscribe using your Princeton netid and your full first and last names 63

Computing Env: General Action: Create a GitHub account Browse to https://github.com/ Follow the instructions to create an account If possible, choose your GitHub username to be the same as your Princeton netid Action: Send email to rdondero@cs.princeton.edu to tell me your GitHub username 64

Computing Env: Project Action: Create a Google account Browse to http:google.com Follow the instructions to create an account 65

Computing Env: Project For software development Use whatever computing env makes sense Subject to approval of your TA advisor Must provide a way for us to use your system 66

Computing Env: Assignments Option 1: Use CourseLab cluster courselab.cs.princeton.edu courselab01.cs.princeton.edu courselab02.cs.princeton.edu Option 2: Use your own computer Mac, MS Windows, or Linux But, eventually must port to CourseLab Run submit command Make sure your programs work for grader 67

Computing Env: Assignments Action: Perform the instructions on the A Computing Environment for COS 333 Assignments document 68

Summary Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly) Policies (briefly) The Computing Environment 69