AY 2006-2007/Sem-2/Principles of Programming
From IIITM-k-wiki
The aim of this course is to teach you, the student, the fundamental concepts underlying programming and connect those concepts to software engineering practices. The course will introduce concepts essential for understanding programming from a perspective that emphasizes computational ideas (like interpretation, interaction, and persistence, for example) rather than grinding through language syntax.
The approach used in the course will be hands-on and will involve working with real web applications. You will design and implement various program and data processors -- state machines, interpreters, and transformers, parsers, and validators. The design of these processors will be based on abstraction principles for data, state, control, interaction and persistence.
The course uses the Javascript language (no relation to Java), and some Scheme. Scheme's simple syntax makes it easy to write programs that test ideas about data abstraction, higher-order functions, and recursion. On the other hand, various language features of Javascript and its widespread adaptation in the Web browsers render it a good platform during the laboratory hours, which in turn serves as the future development environment for Web 2.0 applications. Javascript's support for higher-order functions, objects, and interaction through AJAX, and its support for interpretation in a web browser makes it well-suited for illustrating the fundamental ideas of computing. As a student, you will find it useful to be introduced early to this new style of interactive programming. The interaction is two fold here: first with the user, in terms of mouse and button events, etc., and second, with a back-end server that stores persistent data, or other programs, through web services.
Jump to Syllabus.
Jump to Lecture Notes.
Instructors
Principal Instructors
Venkatesh Choppella
IIITM-K.
Home Page: http://www.iiitmk.ac.in/~choppell
Location: Faculty Annexe, Park Centre, Technopark, Trivandrum, India
Email: choppell[AT]iiitmk[DOT]ac[DOT]in
Office Hours (for walk-in meetings) 4:30-5:30pm Tue, Wed
T B Dinesh
Janastu
Location: Bangalore, India
Email: dinesh[AT]servelots[DOT]com
Associate Instructor(s)
Siv Chand Koripella
IIITM-K.
Location: Faculty Annexe, IIITM-K, Park Centre, Technopark, Trivandrum, India & Developer Lounge, IIITM-K, Nila, Technopark, Trivandrum, India
Email:
Version 1 in C
main()
{
int j=-1;
char t[]="xn{hmfsiEnnnyrp3fh3ns\n";
while(t[j]!='\n')
{
putchar(t[++j]-'\05');
}
return 0;
}
Version 1 in JS
function email(t)
{
var j=0;
var email = "";
while(j < t.length)
{
email = email + (String.fromCharCode(t.charCodeAt(j) - 5));
j++;
}
return(email);
}
email("xn{hmfsiEnnnyrp3fh3ns");
Office Hours: 1400 Hrs-1600 Hrs Thu
Calendar(look for changes in office hours): [http://in.calendar.yahoo.com/k_sivchand]
Vimal Joseph
SPACE
Location: SPACE, C-11, Elankom Gardens, Vellayambalam, Thiruvananthapuram
Email:vimal[AT]space-kerala[DOT]org
Office Hours:1400 Hrs-1600 Hrs Thu
Calendar:
Smitharani N
Location: Indian Institute of Information Tech. & Management - Kerala, Technopark, Trivandrum, Kerala India 695581
Email: smitharani[AT]iiitmk[DOT]ac[DOT]in
Calendar: My calendar
Divya VJ
Location: Indian Institute of Information Tech. & Management - Kerala, Technopark, Trivandrum, Kerala India 695581
Email: divyavj[AT]iiitmk[DOT]ac[DOT]in
Calendar:
Abhishek Kr. Gupta
Location: Indian Institute of Information Tech. & Management - Kerala, Technopark, Trivandrum, Kerala India 695581
Email: abhishek-pg4[AT]iiitmk[DOT]ac[DOT]in
Office Hours: 1400 Hrs-1600 Hrs Thu
Calendar: My calendar
Shabeerali
MSIT student
Location : IIITM-K, Park Centre, Lab-1 ,Trivandrum, India
Email : shab-pg5@iiitmk.ac.in
Phone : + 91 - 9895168270
Office Hours: 1400 Hrs-1600 Hrs Thursday
See My Calendar
Course Announcement and Registration Information
A formal announcement of the course is at http://www.iiitmk.ac.in/iiitmk/programs/course_announcement/pop.html
Students wishing to register for this course for credit at IIITM-K should consult the institute course announcement pages:
http://www.iiitmk.ac.in/iiitmk/programs/course_announcement/index.html
Call for faculty from colleges around Bangalore and Tumkur
Jan 12th meeting. SIT of Tumkur, in addition to CIT and CITRIS of Tumkur, have started evaluating the course details. On 24th, had a short meeting with Prof Siddappa of SSIT. He will discuss and get back on the feasibility issues of offering this course. On Feb 2nd, presented to faculty at BMS college CS department. We will further discussions on offering this for the elective Principles of Programing.
Dinesh will be engaging faculty/people who are interested in offering this course in the Tumkur/Bangalore area during the upcoming semester. The meetings are with people who are interested in potentially offering this course in their colleges or elsewhere. Please contact dinesh -at- servelots.com
[We welcome others to announce their calls here]
Forum
The forum for this course is popjs-2007-iiitmk@googlegroups.com. Anyone is allowed to post to this forum. You can subscribe to this mailing list by visiting http://groups.google.com/group/popjs-2007-iiitmk
When you post messages, please include in the subject line one or more of the following tags (separated by spaces and enclosed in square brackets). You may also invent your own tags.
- iiitmk -- posts specific to the course offered at IIITM-K
- pop -- general discussions about Principles of Programming
- js -- javascript related issues
- env -- general discussion about firefox tools and environments
- ajax -- issues related to ajax
- teaching -- issues related to how to teach a topic or concept
Here is an example of a Subject Line:
[js teaching] How to teach closures in Java Script
RSS Feed from the forum
<rss>http://groups-beta.google.com/group/popjs-2007-iiitmk/feed/rss_v2_0_msgs.xml?hl=en|short|max=15|title=Course Feeds</rss>
Syllabus
The course will try to follow the tentative syllabus, but minor corrections in the content and sequence may be made as the course progresses. Also, exactly which topics will be covered will be governed by time constraints.
Weekly breakup of lectures and reading assingnments
Week 13 (Apr 9 - Apr 15 2007)
- Visit by Dr. Dinesh and Bangalore Bar camp conference report
- Closures as Objects
- Constructors, classes, and inheritance
- Polymorphism
Week 12 (Apr 2 - Apr 8 2007)
- Mutable values and Variable Assignment
- Sequencing
- Implementation of Variable Assignment in the interpreter
- Recursion, Tail Recursion and Iteration
Week 11 (Mar 26 - Apr 1 2007)
- Functions and Let in the Interpreter
- Implementation of Dynamic scope and Lexical scope
Week 10 (Mar 19 - Mar 25 2007)
- Environments (Revision)
- Implementation using List
- Implementation using Procedures
- Interpreters (Revision)
Readings EOPL Chapter 2.3, 3.1, 3.3, 3.4, 3.5, 3.6, 3.7 Due by Wed Mar 28th. Quiz on Mar 28th will be based on this material.
Week 9
- Variable Scope
- Lexical scoping
- Dynamic Scoping
- Demonstration using Emacs-LISP and Scheme
- Objects
- Encapsulation
Week 8
Interpreter
Week 7
Rib Structure Implementation Of Environments
Interpreter
Week 6
Deep Lists and Deep Recursion
Dynamic Scope
Objects in JavaScript
Week 5
Environments Implemented As Functions
Lists As Data Structure
Environments As Tagged Lists
Week 4
Functions & Procedural Abstraction
Abstraction & Higher Order Functions
Closures & Lexical Scope
Reasoning With Values
Week 3
Variables, Substitutions and Functions
Reading Assignment:
Lec Script:
Week 2
Expressions and Evaluation
Reading Assignment:
Notes: Values, Types and Tags
Lecture Script for 2007-01-10: Expressions and Evaluation
Week 1
Introduction to Principles of Programming
Lec script: see section in notes Preface: Introduction to Programs, Software and the Principles of Programming
Lecture Notes
Lecture Scripts
Lab Works
From now on, (2007-03-26), lab assignments will be posted on Sundays. They will be due the following Sunday 11.59pm. You will be graded on what you submit by this deadline. Solutions for the assignment will be posted Monday morning 10:00am.
Lab 1 @ IIITM-K 2007-01-03
Lab on SVN : In this lab session the concepts of versioning and hands on working with SVN is discussed.
Lab 2 @ IIITM-K 2007-01-10
Lab Programming Environment : In this lab session the required Programming Environments, Programming tools are discussed.
Lab 3 @ IIITM-K 2007-01-17
Basic Javascripting : In this lab session You will basic programming in Javascript.
Lab 4 @ IIITM-K 2007-01-24
Lab 5 @ IIITM-K 2007-02-01
Lab 6 @ IIITM-K 2007-02-07
Lab 7 @ IIITM-K 2007-02-14
Lab 8 @ IIITM-K 2007-03-14
Lab 9 @ IIITM-K 2007-03-21
Lab 10 @ IIITM-K 2007-03-28
Lab 11 @ IIITM-K 2007-04-01
Lab 12 @ IIITM-K 2007-04-10
Resources for Principles of Programming course
There is no text book for this course. Students will have to rely on notes provided by the instructors and also supplementary reading material, mostly drawn from the references below. The course will include regular reading homework assignments. The reading assignments for the week will be due before the beginning of the lecture of that week.
/Report
Instructor space
To access Trac issue tracker use this link

