COURSE TEMPLATE
7. | Pre-requisites (course no./title) | Nil |
9. | Not allowed for (indicate program names) | Students with Comp Sci or Informatics background in school |
10. | Frequency of offering | Every sem 1st sem 2nd sem Either sem |
11. | Faculty who will teach the course Multiple faculty members may be assigned. | |
12. | Will the course require any visiting faculty? | No |
13. | Course objective (about 50 words): Use of high level programming language for the systematic development of programs. Introduction to the design and implementation of correct, efficient and maintainable programs. |
14. | Course contents (about 100 words) (Include laboratory/design activities): Computing as a process vs. the digital computer as a tool for computing. Using a modern networked digital computing facility. Basic notions of accessing and using a digital computer securely. Concept of an algorithm; basic conceptual primitives for describing an algorithm; termination and correctness. Algorithms to programs: specification, top-down development and step-wise refinement. Iterative versus recursive style; problem solving using a functional style; correctness issues in programming; efficiency issues in programming; time and space measures. Structured style of imperative programming; Assertions and loop invariants; programming in an imperative language using advanced features: procedures, functions. Introduction to basic numerical methods. |
15. | Lecture Outline (with topics and number of lectures) |
Module no. | Topic | No. of hours |
1 | - Computing as a process: examples from school Mathematics - The modern digital computer as a tool - The basics of logging in, password, security - Using the shell and the GUI environments | 6 |
2 | - Models of computation. The stored program model - Mathematical preliminaries - Computer organization and basic principles of operation - A functional model of computation - The primitive expressions - Function parameter substitution and variable binding - Definition of functions using conditionals and cases | 4 |
3 | - Functions as inductively defined computational processes - Recursive processes - Analysis of correctness and efficiency - Tail-recursion and iterative processes - Correctness of an iterative process - Examples of iterative processes | 8 |
4 | - Analysis of correctness and efficiency - Correctness - Efficiency - Efficiency, Why and How? - In the long run: Asymptotic analysis and Orders of growth - More examples of recursive algorithms | 6 |
5 | The imperative model of computation - The primitives for the imperative model - Variables and the assignment instruction - Assertions - The if-then-else instruction and the while-do instruction - Functions and procedures in the imperative models - Step-wise refinement and procedural abstraction | 5 |
6 | Linear Data Structures: - Lists, Arrays, Strings - Sequence operations - Stacks and Queues - Searching and Sorting | 8 |
7 | - Object orientation concepts - Executable specifications and rapid prototyping; Examples of step-wise refinement | 5 |
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
COURSE TOTAL (14 times ‘L’) | 42 |
16. | Brief description of tutorial activities |
NA
|
17. | Brief description of laboratory activities |
Moduleno. | Experiment description | No. of hours |
1 | Logins, passwords, editing, shell and GUI usage | 4 |
2 | Multiple programming assignments of varying difficulty will be given on topics such as - |
|
3 | - Numerical computations | 6 |
4 | - Working with linear data structures - lists and strings | 6 |
5 | - Searching and sorting | 6 |
6 | - Multi-objective search | 6 |
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
COURSE TOTAL (14 times ‘P’) | 28 |
18. | Suggested texts and reference materialsSTYLE: Author name and initials, Title, Edition, Publisher, Year. |
1. Subhashis Banerjee, Lecture Notes in Computer Science, 2011 2. Python Programming: An Introduction to Computer Science by John Zelle. or suitable language reference depending on the language used for instruction (Python/SML/OCaml/MATLAB/Haskell/etc.) 3. How to Solve it by Computer, by R.J. Dromey, Prentice-Hall India EEE Series.
|
19. | Resources required for the course (itemized & student access requirements, if any) |
19.1 | Software | Interpreters for Python, OCaml, MATLAB etc |
19.2 | Hardware | Computer terminals for all students |
19.3 | Teaching aides (videos, etc.) |
|
19.4 | Laboratory | Computer Services Centre/First Year teaching lab |
19.5 | Equipment |
|
19.6 | Classroom infrastructure | Classroom of appropriate size |
19.7 | Site visits | None |
20. | Design content of the course (Percent of student time with examples, if possible) |
20.1 | Design-type problems | 20% |
20.2 | Open-ended problems |
|
20.3 | Project-type activity |
|
20.4 | Open-ended laboratory work |
|
20.5 | Others (please specify) |
|
Date: (Signature of the Head of the Department)