Scripting Languages
CS 5142, Fall 2013

General information / Course Description / Schedule / Grading / See also

General Information

Lecture: MWF 12:20-1:10pm, Olin 245
Instructor: Robert Soulé, soule@cs.cornell.edu, 4154 Upson Hall
Instructor office hours: Mondays 1:10pm - 2:10pm (after class).
Assistants: Ozan Irsoy (oirsoy@cs.cornell.edu), Theodoros Gkountouvas (tg294@cornell.edu)
Piazza: https://piazza.com/cornell/fall2013/cs5142/home
CMS: http://cms.csuglab.cornell.edu/

Course Description

Perl, PHP, JavaScript, VisualBasic -- they are often-requested skills for employment, but most of us do not have the time to find out what they are all about. In this course, you learn how to use scripting languages for rapid prototyping, web programming, data processing, and application extension. Besides covering traditional programming languages concepts as they apply to scripting (e.g., dynamic typing and scoping), this course looks at new concepts rarely found in traditional languages (e.g., string interpolation, hashes, and polylingual code). Through a series of small projects, you use different languages to achieve programming tasks that highlight the strengths and weaknesses of scripting. As a side effect, you practice teaching yourself new languages.

Syllabus

Recommended Books

There is no official textbook for this course. However, here are some useful resources:

Prerequisites

The course is designed to be relatively self-contained. You need to be familiar with some existing C-like language (one of C, C++, Java, or C#, to name a few). But you do not need prior knowledge of either web design or scripting languages for this course. As long as you have a basic understanding of computer science, you should be able to pick up the new languages in the class.

Grading

Grades will be calculated to 25% from homeworks, 11% from prelim1, 19% from prelim2, and 45% from the final exam.

Academic integrity

Please carefully read the the university and department's academic integrity policies:

Assignment deadlines

The policy for late assignments is as follows:

Tentative Schedule

Date Lecture topic Homework Quiz
08/28/2013 Introduction    
08/30/2013 End user programming (VBA) hw1 
09/02/2013 No class. Happy Labor Day.    
09/04/2013 Objects, properties, call-backs I    
09/06/2013 Objects, properties, call-backs II hw2  
09/09/2013 Textual data processing (Perl) I    
09/11/2013 Textual data processing (Perl) II    
09/13/2013 Guest Lecture: Dr. Thomas Ball,TouchDevelop hw3 
09/16/2013 Regular expressions    
09/18/2013 Context, objects, scripting as glue I    
09/20/2013 Context, objects, scripting as glue II hw4  
09/23/2013 Bash    
09/25/2013 Prelim Review    
09/27/2013 Prelim 1 (in class)    
09/30/2013 Server-side scripting (PHP) I    
10/02/2013 Server-side scripting (PHP) II    
10/04/2013 Server-side scripting (PHP) III hw5  
10/07/2013 Client-side scripting (JavaScript) I    
10/09/2013 Client-side scripting (JavaScript) II    
10/11/2013 JQuery hw6  
10/14/2013 No Class (Fall Break)    
10/16/2013 Web applications and databases I    
10/18/2013 Web applications and databases II hw7  
10/21/2013 Server-side Javascript I    
10/23/2013 Server-side Javascript II    
10/25/2013 Ruby I hw8  
10/28/2013 Ruby II    
10/30/2013 Prelim Review    
11/01/2013 Prelim 2 (in class)    
11/04/2013 Python    
11/06/2013 CFG, Parsing parser.py  
11/08/2013 Python II hw9  
11/11/2013 TouchDevelop Tutorial, Basic Abstractions    
11/13/2013 TouchDevelop Boxes and Pages    
11/15/2013 TouchDevelop Build, TypeScript hw10  
11/18/2013 Security    
11/20/2013 Security (Guest Lecture: Owen Arden)    
11/22/2013 Security (Guest Lecture: Prof. Andrew Myers) hw11 
11/25/2013 Debugging    
11/27/2013 No class (Thanksgiving)    
11/29/2013 No class (Thanksgiving) hw12 (for fun)  
12/02/2013 OCaml    
12/04/2013 Final Review    
12/06/2013 Final Review    
12/17/2013 Final Exam at 7pm, Olin Hall 165    


See also

This material is based on a course designed by Dr. Martin Hirzel at New York University.