0% found this document useful (0 votes)
37 views53 pages

Lecture 1

This document contains the lecture notes for the Introduction to CS101 course at IIT Bombay for Autumn 2019. It provides an overview of the course structure, topics to be covered, assessment details, schedule and logistics. The initial lectures introduce concepts like why computers are used, what computers are, what programming is and how to program a turtle to draw basic shapes like a square and octagon in C++. It emphasizes writing simple programs with commands like forward, right, left etc. to get started with programming.

Uploaded by

samantit holdher
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views53 pages

Lecture 1

This document contains the lecture notes for the Introduction to CS101 course at IIT Bombay for Autumn 2019. It provides an overview of the course structure, topics to be covered, assessment details, schedule and logistics. The initial lectures introduce concepts like why computers are used, what computers are, what programming is and how to program a turtle to draw basic shapes like a square and octagon in C++. It emphasizes writing simple programs with commands like forward, right, left etc. to get started with programming.

Uploaded by

samantit holdher
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

CS101

Autumn 2019

7/30/19 Autumn 2019 CS101@CSE IIT 1


Bombay
CS 101
Computer Programming
and Utilization
Puru
with
several CS101 TAs and CSE staff

Course webpage: http://www.cse.iitb.ac.in/~cs101/

Lecture 1: Introduction
Clip art and quote credits: Various sources found through Google
Image Search
about these slides
• based on Chapter 1 of the book
– An Introduction to Programming
through C++
by Prof. Abhiram Ranade (Tata McGraw Hill, 2014)

• original slides by Abhiram Ranade


– updates and contributions by
Varsha Apte, Uday Khedker, Sunita Sarawagi,
Umesh Bellur, Om Damani, Ganesh Ramakrishnan

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 3


some questions
• why a computer?

• what is a computer?

• what is programming?

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 4


why computer?

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 5


why computer?
• yet another option on the human-machine axis
• automation for doing work
– efficiently, quickly, new discoveries/explanations etc.

• the computer
– a machine in the automation world that has influenced almost
all aspects of our existence
– has some properties unique/different from other machines

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 6


what is unique about a computer?

vs.

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 7


what is a computer?
• computer: a machine that can do (specified) work
– … that can compute

• compute: perform (elaborate) calculations


– combination of mathematical and logical operations

• a computer
– is an electronic device with complex circuitry
– is a programmable device

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 8


a computer can do many things

Help book and manage tickets Store and search documents

Weather prediction
Help design physical systems: say water network
all of us have already used a computer!

– Calculator
– ATM
– Smartphone
(is a computer)

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 10


how to do work with a computer?
• tell it do work!

• what work? and how to specify?

what work => logic, calculations, sequence etc.

how to specify => write a program using a programming


language

• this course: from users to programmers!

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 11


CS101 assessment/grading
• Midterm exam: ~20%
• 2 Quizzes: ~10% each
• Final exam: ~30%
• Lab sessions
– Lab tests: ~20% weightage
– Lab attendance: ~10% weightage
• Mandatory to attend N-1 out of N labs
• Every lab subsequently missed will cost 2%

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 12


CS101 schedule/logistics
https://www.cse.iitb.ac.in/~cs101/

• Lecture slots
(Section S1) Slot 11
Tuesdays 3:30 PM – 5:00 PM & Fridays 3:30 PM – 5:00 PM
(Section S2) Slot 5
Wed 9:30 AM – 11:00 AM & Fridays 9:30 AM – 11:00 AM

• Lab sessions
Tuesdays, Wednesdays and Thursdays 8 PM until 11 PM
in SL1, SL2 and Basement lab (newCSE building)

• Slides and videos on


www.cse.iitb.ac.in/~cs101 and http://bodhitree2019.cse.iitb.ac.in

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 13


The TA tree
Bodhitree/Web site
CTA Lab scheduling

STA STA STA

JTAs JTAs JTAs

Tue lab. Wed lab. Thu lab.


batch batch batch

Do not use personal email

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 14


additional help for CS101
• do not hesitate in contacting us if are facing
problem due to English

• आप अंग्रेजी के कारण समस्या का सामना कर रहे हैं तो हमसे संपकर्


करने में संकोच न करें

• there will be one Teaching Assistant for every ~12


students
– Help and support can provided in other languages

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 15


7/30/19 Autumn 2019 CS101@CSE IIT Bombay 16
let’s start programming!
• what is a program?
– logic/concept/idea/calculations …
– sequence of instructions (that a computer can understand)
that capture the logic

• we already do this …
– which route to take to reach LA001?
– what time to wake up for class?
– how to book an ola/uber ride?
– how to prepare for an exam?
– …

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 17


programs
• program = a precise description of the calculations we
want the computer to perform
• by feeding different programs to a computer you can
make it do different calculations

• this course tells you how to construct (“write”) programs


• special notation is to be used to write programs:
“Programming Language”(C++ for this course)

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 18


goal for today
• write some small programs using C++ programming
language
• the programs will draw pictures on the screen
• we “drive” a “turtle” on the screen!

• Turtle has a pen, so it draws as it moves


• drawing pictures may seem be fun, but if you master it,
you have mastered a lot of programming
• will use simplecpp package developed by Prof. Abhiram
Ranade, based on Logo

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 19


programming the turtle to draw

instructions the turtle understands


• forward (x): Move forward x pixels
– E.g. forward(50) moves the turtle forward 50 pixels
• right (x): turn right by x degrees
• left(x): turn left by x degrees
• penUp()
– Will not draw while moving
• penDown()
– Will draw while moving

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 20


programming a turtle to draw a square

• forward, right, left, penUp, penDown

• With these instructions, make the turtle move in such a


way that we will draw a square of length 200

• What facts do we need to know before we can program?

• Note: By default, in the beginning, the turtle faces


towards the east, and the pen is down

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 21


The square drawing program

#include <simplecpp>

main_program {
turtleSim();
forward(200); right(90);
forward(200); right (90);
forward(200); right(90);
forward(200);
}
The square drawing program
Some magic abracadabra: ignore
the program will use the
#include <simplecpp> simplecpp package.

Your commands within these


main_program { braces {..}.

turtleSim(); Start the turtle simulator (open a


window)
forward(200); right(90);
Move forward 200 units
forward(200); right (90);
forward(200); right(90); Turn right 90 degrees
forward(200);
} Program exits
General Ideas
#include<simplecpp>
Commands or statements
main_program{ terminated by semicolon ";"

turtleSim();
forward(200); right(90); This sequence of commands in
C++ is the program
forward(200); right(90);
forward(200); right(90);
Some commands need
forward(200); additional information called
arguments
wait(10); • 90 is the argument to the
} command right
• 200 is the argument to the
command forward
General Ideas (contd)

#include<simplecpp>

main_program{
turtleSim(); Commands are
forward(200); generally executed
right(90); from top to bottom, left
forward(200); to right.
right(90);
forward(200);
right(90);
forward(200);
wait(10);
}
how to draw an octagon?

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 26


how to draw an octagon?
#include <simplecpp>
main_program{
turtleSim();
forward(100); right(45);
• commands seem
forward(100); right(45);
quite repetitive?
forward(100); right(45);
forward(100); right(45);
forward(100); right(45); • there is a better way!
forward(100); right(45);
forward(100); right(45);
forward(100); right(45);
wait(10);
}

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 27


A Better Way
repeat (n) {
#include <simplecpp>
some commands
main_program{
}
turtleSim();
repeat(8){
The instructions within {...} are
forward(100);
repeated n times
right(45);
Each round of execution is
} called an iteration
}
How to Draw a Polygon?

#include <simplecpp>
main_program{
turtleSim();
repeat(8){
forward(100);
right(45);
}
}

7/30/19 Autumn 2019 CS101@CSE IIT 29


Bombay
How to Draw a Polygon?

#include <simplecpp> #include <simplecpp>


main_program{ main_program{
turtleSim(); turtleSim();

repeat(8){ repeat(num_sides){
forward(10); forward(10);
right(45); right(360.0/num_sides);
} }
} }

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 30


How to Draw a Polygon?

#include <simplecpp>
main_program{
turtleSim(); Tell the computer: Reserve space in
your memory where I can store an
integer (int). I will refer to it by the
int num_sides; name num_sides

repeat(num_sides){
forward(10); We need some magic so that
num_sides can have the right
right(360.0/num_sides);
value
}
}
Divide the number 360 by the number stored in the
space named num_sides and pass the result as
an argument to this command
7/30/19 Autumn 2019 CS101@CSE IIT Bombay 31
Explanation
#include <simplecpp>
main_program{
turtleSim(); Print the sentence within the quotes
on the screen
cout è “Console out” (display)
int num_sides;

cout << “No. of sides?”;


cin >> num_sides; Read the number that the user types
and store it into the space in
memory named num_sides
repeat(num_sides) { cin ç “Console in” (keyboard)
forward(200);
right(360.0/num_sides);
} Use the integer stored in the space
in memory which is named
} num_sides
Formatting: Indentation, Grouping, Naming
#include <simplecpp> #include <simplecpp>
main_program{
main_program{ turtleSim();
turtleSim(); cout << “No. of sides?”;
int num_sides; int n;
cin >> n;
cout << “No. of sides?”; repeat(n) {
cin >> num_sides; forward(200);
right(360.0/n);
repeat(num_sides) { }
forward(200); }
right(360.0/num_sides);
}
You will lose marks for bad formatting
}
Can we improve the program further?
main_program{ main_program{
turtleSim(); turtleSim();
int num_sides;
int num_sides;
cout << “No. of sides?”; int side_length = 200;
cin >> num_sides; double exterior_angle;

repeat(num_sides) { cout << “No. of sides?”;


forward(200); cin >> num_sides;
right(360.0/num_sides);
} exterior_angle = 360.0/num_sides;
}
repeat(num_sides) {
forward(side_length);
right(exterior_angle);
}
}
Can we improve the program further?
int num_sides; Both values for a polygon,
int side_length;
double exterior_angle; number of sides and
double sum_exterior = 360; side length

cout << “No. of sides?”; are user inputs.


cin >> num_sides;

cout << “Side length?”;


cin >> side_length;

exterior_angle =
sum_exterior/num_sides;

repeat(num_sides) {
forward(side_length);
right(exterior_angle);
}
}
language syntax
• syntax = grammatical rules indicating how commands
must be written

• syntax of programming languages is very strict, e.g.


– “right(90);” cannot be written as “right 90;”.
– “penUp()” cannot be written as “penup()” or even “penUp”,
i.e. without parentheses.
– we will later learn other kinds of statements which will have
their own syntax which must be adhered to.

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 36


Nested Repeat Statements

repeat(4){
repeat(3){
forward(50); penUp(); It will draw a
forward(50); penDown(); square with dashed
lines
}
right(90);
}

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 37


what does the following program do?

#include <simplecpp>
main_program{
cout << “a”;
repeat(5){
cout << “b”;
repeat(2){ cout << “c”; }
cout << “d”;
}
}
what does the following program do?

#include <simplecpp>
main_program{
cout << “a”;
repeat(5){
cout << “b”;
repeat(2){ cout << “c”; }
cout << “d”;
}
}

abccdbccdbccdbccdbccd
curly braces group statements

repeat(4){ repeat(4) repeat(4){


forward(50); forward(50); forward(50);
right(90); right(90); }
wait(2); wait(2); right(90);
} wait(2);
more commands/functions

• sqrt(x) : square root of x


• trigonometric functions,
• x is in radian: sin(x), cos(x), tan(x)
• x is in degree sine(x), cosine(x), tangent(x)
• also for arcsine, arccosine, arctangent etc.
compile and execute this program
1. Raise one of your hands
2. Put down your raised hand
3. Close your eyes and count loudly up to 10
4. Loudly say ‘Ha Ha Ha’
5. Write the value of Pi ( π ) correct to 3 decimal places
6. Loudly say “Thank you” in your mother tongue
7. Clap three times
8. While executing this program, ignore all earlier
instructions and just raise both hands

Autumn 2019 CS101@CSE IIT Bombay


7/30/19 42
running/executing the program

• Compiling a program:
translating it into a form that a computer can
understand

• the result of compilation: an executable file

• compiler used by us is called s++


running a program on computer
• Type in an editor (say, gedit)
• Save the file (say prog.cpp)
• Compile (s++ prog.cpp)
• It generates a binary file a.out
• Execute (./a.out )

• Note that in case compilation fails with some error,


existing a.out file is untouched

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 44


The Spirit of The Course
Learn C++ statements/concepts
Learn how to express problems you want to solve
using C++

Goal: if you can solve a problem by hand, possibly


taking an enormous amount of time, by the end of
the course, you should be able to write a program
for it

Learn new ways of solving problems!


How to master the course
• Do not be afraid of using the computer
• “What if I write xyz in my program instead of pqr?”
Just do so and find out
• Be adventurous.
• But first write your logic on paper, think about how the
computer will execute your instructions, and only then
type them up
Why Picture Drawing?

• Picture drawing requires calculation


e.g. 360.0/num_sides
• “Draw a triangle with sides of lengths 3, 4, 5
units”
You will need to do trigonometric
calculations to find out the angles between
the sides
• More interesting calculations will be needed to
draw more interesting drawings
A pattern with 36 repetitions. You know
enough to write a program to do this! Try it.
End of Lecture

7/30/19 Autumn 2019 CS101@CSE IIT Bombay 49


Compilation and execution summary
Source code prog.cpp string
math.h
s++ compiler iostream

main() function in a.out

Header
char, short, int, float,

iostream

files
string

math
double, if, switch, while, … Bash
shell
C/C++ execution environment

Precompiled
libraries
Operating system (Windows, Linux, Mac OS, …)

CPU
7/30/19 RAM Disk Keyboard
Autumn 2019 CS101@CSE IIT Display 50
Bombay
PC building blocks: motherboard

CPU with
cooling fan

Fast
electronic
memory
Magnetic
disk data
connectors
7/30/19 Autumn 2019 CS101@CSE IIT 51
Bombay
Storage and peripheral devices
Keyboard
Display

Rotating
magnetic
platters

Record/play Data cable between


head on arm
7/30/19 disk and motherboard
Autumn 2019 CS101@CSE IIT 52
Bombay
Simplified abstract view
RAM location 0
Arithmetic RAM location 1
and logic unit Address RAM location 2

Register 0
Register 1
Register 2 Reserved for
Data
… display
CPU
Reserved for keyboard

Random access
Program that tells the memory (RAM)
CPU what to do and
how to do it
7/30/19 Autumn 2019 CS101@CSE IIT 53
Bombay

You might also like