Introduction to Programming (IOPS332C, 2-1-1)

 

AUTUMN 2020-2021
Lecture: Wednesday (11:10 AM-1:10 PM); Tut: Monday (5:00 PM - 7:00 PM); Lab: Tuesay (5:00 PM - 7:00 PM) 

Lectures/ Tut and Lab evaluation to be held Online via Google Meet

Announcements, Assignment submission and Quiz evaluations via Google Classroom

 

 

 

 

Course Objective: 

The course introduces students to the theoretical and practical knowledge of programming using C programming language as an implementation tool. It aims at providing students with understanding of programming essentials, pseudo codes and algorithms, data types, elementary control structures and functions used within the framework of imperative and structural programming paradigms.


Course Outline: 


Component

Unit 

Component 1 

Unit 1 : Introduction to digital computers; introduction to programming - variables, assignments; expressions; input/output; conditionals and branching; iteration; 

Component 1 

Unit 2: functions; recursion; arrays; introduction to pointers; structures;

Component 2 

Unit 1 : introduction to data-procedure encapsulation; dynamic allocation; linked structures; 

Component 2 

Unit 2: introduction to data structures - stacks and queues; time and space requirements. 



Tools and Language

The vehicular language used for the course would be "C". All codes, assignments and lab exercises will be implemented in C language only.

The computer systems for the course are the machines in Lab 5042. 

The preferred operating system for the tutorials and lab would be Ubuntu and the preferred editor would be Gedit or vi or Emacs


Linux Distribution


It is a good idea to have Ubuntu Linux installed on your machine. The GNU C compiler comes as default with the distribution. Be sure to choose it, if it is not selected by defaults, from the 'Development' items during installation. If you forget to install and desired package at the time of installation then use sudo apt-get install to select and install new packages. You need to be a root (super) user to do this (sudo gives you temporary root user permission).


Linux can co-exist with Windows, if you have that already installed. Otherwise, if you like to have both then you should install windows first and Linux next. Windows sometimes disturbs other installed systems. 

A recent Ubuntu distribution is available [here] 


Compiler

Most students prefer using non-ANSI-compliant compilers such as Turbo C while working at home. We strongly discourage doing so. Microsoft's Visual C++ compiler is good and recommended for use. But this compiler is proprietary and free copies of it cannot be obtained. The GNU range of compilers and the emacs editor can, however, be freely downloaded from the Internet. You are encouraged to download and install them in your machines, and use these software instead of non-standard software.


Editor

The preferred editors for the tutorial and lab sessions would be either Emacs , Gedit or vi 

Gedit and vi are pre-installed with any Ubuntu distribution.

To install Emacs in the Ubuntu environment : Open a terminal and type sudo apt-get install emacs 


Working in the Windows environment

Students preferring to work in the Windows environment are encouraged to try ANSI-C compliant Compilers only and are asked to visit the this page to know how to download and install GCC compiler in the Windows environment.


Some helpful links


Code blocks

 

 

References:

 

1.      Brian W. Kernighan Dennis M. Ritchie, The C Programming Language, Prentice Hall of India. 

2.      E. Balaguruswamy, Programming in ANSI C, Tata McGraw-Hill. 

3.      R. G. Dromey, How to Solve it by Computer, Prentice-Hall of India. .

4.      Ellis Horowitz, Satraj Sahni and Susan Anderson-Freed, , Fundamentals of Data Structures in C, W. H. Freeman and Company. 

5.      Seymour Lipschutz , Data Structures, Schaum's Outlines Series, Tata McGraw-Hill.

6.      PDS notes @IIT KGP 

 

 

 

 

Important Instructions:

1.         The lab classes will mainly consist of implementation of programming concepts discussed in class and the assignments covered in tutorial sessions. of the course website for details. 

2.         Every student is expected to have access to at least the book by Ritchie and Kerningham.

3.         Attendance in the lab classes is mandatory. If the attendance of a student falls below 75%, he/she may will be dropped from the course after Component 2

4.         The laboratory classes will have tutorials, class assignments and take-home assignments, which has to be done very seriously. If a student does not submit the assignments, his/her grade will remain as incomplete.

5.         Grading Policy : 

o   Component 1 - Lab assignments and a lab test will form the 10% of this component.

o   Component 2 - Lab assignments and lab test will form the 10% of this component. 

o   Component 3 - No lab evaluation 

6.         Class assignments : Each lab assignment will have a tutorial section which will help you to recap the concepts discussed in class. Once you feel comfortable after the tutorials you have to start working on the class assignments which have to be completed within the class hour and get them evaluated by the TAs.

7.         Take home assignments : Each lab assignment will have a take-home assignment part which has to be done and submitted to the TAs. You will be notified about the mode of submission (tentatively using Google Classroom ).

Lab Related Instructions:

1.         Submission : All submissions must be made using Google Classroom . You will be notified about mode and way to submit in the tutorial classes. 

e-mail submission is strongly discouraged and if submitted will be ignored.  Submissions after the deadline will not be considered.

2.         Programming Language : All programs must be written in the C programming language. algorithms. Although we will initially help you to debug your codes, the debugging support will be slowly withdrawn as time progresses. For C syntax, look at the lecture slides, or bring with you any textbook on ANSI C.

3.         Plagiarism :  We have a zero tolerance policy towards plagiarism. Any case of cheating or stealing codes would result in imposition of “ Unfair Means “ charge on you and you will have to face the disciplinary committee of the Department leading to probable de-registration from the course. The person who allowed his program to be copied and the one who copied it will face same consequences.  If you copy parts of your code from the Internet, you must mention that clearly in your code. Failure to do that will lead to your entire submission being invalid. 


4.         Comments and Indentation : We want your programs to follow a proper indentation style as instructed in the lab

         

 

 

 

Important Instructions:

 

Sl. No.

Topic

Tutorial/Assignments

Reference Codes / Helpful Resources

1.

Setting Up your Linux environment to compile a C code

Tut-0

my_first_program.c


2.

Fundamental Concepts 

Tut-1


Assignment 1


read_input_keyboard.c

centigrade_to_fahrenheit.c

prog3.c

prog4.c

prog5.c

3.

Handling Data in C - Variables and Constants 

Tut-2

Assignment 2


prog6.c

prog7.c

prog8.c

4.

Control Structures in C - Decision Making 

Tut-3

Assignment3


prog9.c

prog10.c

prog11.c

prog12.c

prog13.c

prog14.c

5.

Control Structures in C - Loops 

Assignment4


factorial

fibonacci

Decimal to Binary

Half Pyramid

Prime no. detection

Using the getchar()

6.

Functions and Recursion 

Tut-5

Assignment5


Random Number Generator

Power

Calculating Ncr

Factorial:Iterative

Factorial:Recursive

GCD:Iterative

GCD:Recursive

Swap failure

Tower of Hanoi

7.

Arrays in C 

Assignment6


Array Example 1

Array Example 2

Array Example 3

Minimum within an Array of Nos.

Count Upper Case

8.

Passing Arrays to Functions 

Assignment7


Passing Arrays to Function using Call by Value

Passing Arrays to Function using Call by Reference

9.

2-D Arrays 

Assignment8


Matrix Addition

Matrix Multiply

10.

Pointers 

Assignment9


11.

Structures 

Assignment10