AY 2006-2007/Sem-2/Principles of Programming

From IIITM-k-wiki

Jump to: navigation, search

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.

Contents


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

Introduction to DOM

Lab 5 @ IIITM-K 2007-02-01

Procedures

Lab 6 @ IIITM-K 2007-02-07

Javascript and DOM

Lab 7 @ IIITM-K 2007-02-14

Recursive Programming

Lab 8 @ IIITM-K 2007-03-14

Working Interpreter

Lab 9 @ IIITM-K 2007-03-21

Custom Objects

Lab 10 @ IIITM-K 2007-03-28

Spread Sheet#Part I

Lab 11 @ IIITM-K 2007-04-01

Spread Sheet#Part II

Lab 12 @ IIITM-K 2007-04-10

Spread Sheet#Part III

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


Student Activities

Personal tools
<
May 2012
>
SMTWTFS
12345
6789101112
13141516171819
20212223242526
2728293031
Events Upcoming
More ยป