Top Banner
CS101 Autumn 2019 7/30/19 Autumn 2019 CS101@CSE IIT Bombay 1
53

Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

May 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

CS101Autumn 2019

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

1

Page 2: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

CS 101Computer Programming

and UtilizationPuruwith

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

Page 3: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

abouttheseslides

• basedonChapter1ofthebook– AnIntroductiontoProgrammingthroughC++byProf.AbhiramRanade(TataMcGrawHill,2014)

• originalslidesbyAbhiram Ranade– updatesandcontributionsbyVarsha Apte,Uday Khedker,Sunita Sarawagi,Umesh Bellur,OmDamani,GaneshRamakrishnan

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

Page 4: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

somequestions

• whyacomputer?

• whatisacomputer?

• whatisprogramming?

7/30/19 4

Page 5: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

whycomputer?

7/30/19 5

Page 6: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

whycomputer?

• yetanotheroptiononthehuman-machineaxis• automationfordoingwork

– efficiently,quickly,newdiscoveries/explanationsetc.

• thecomputer– amachineintheautomationworldthathasinfluencedalmostallaspectsofourexistence

– hassomepropertiesunique/differentfromothermachines

7/30/19 6

Page 7: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

whatisuniqueaboutacomputer?

7/30/19 7

vs.

Page 8: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

what is a computer?

• computer:amachinethatcando(specified)work– …thatcancompute

• compute:perform(elaborate)calculations– combinationofmathematicalandlogicaloperations

• acomputer– isanelectronicdevicewithcomplexcircuitry– isaprogrammable device

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

Page 9: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

a computercandomanythings

Help book and manage tickets Store and search documents

Help design physical systems: say water networkWeather prediction

Page 10: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

all of us have already used a computer!

7/30/19 10

– Calculator– ATM– Smartphone

(is a computer)

Page 11: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

howtodoworkwithacomputer?

• tellitdowork!

• whatwork?andhowtospecify?

whatwork=>logic,calculations,sequenceetc.

howtospecify=>writeaprogramusingaprogramminglanguage

• thiscourse: fromuserstoprogrammers!

7/30/19 11

Page 12: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

CS101assessment/grading

• Midtermexam:~20%• 2Quizzes:~10%each• Finalexam:~30%• Labsessions

– Labtests:~20%weightage– Labattendance:~10%weightage

• MandatorytoattendN-1outofNlabs• Everylabsubsequentlymissedwillcost2%

Autumn 2019 CS101@CSE IIT Bombay7/30/19 12

Page 13: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

• Lectureslots(SectionS1)Slot11Tuesdays3:30PM– 5:00PM&Fridays3:30PM– 5:00PM(SectionS2)Slot5Wed9:30AM– 11:00AM&Fridays9:30AM– 11:00AM

• LabsessionsTuesdays,WednesdaysandThursdays8PMuntil11PMinSL1,SL2andBasementlab(newCSE building)

• Slidesandvideosonwww.cse.iitb.ac.in/~cs101 andhttp://bodhitree2019.cse.iitb.ac.in

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

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

Page 14: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

The TA treeCTA

STA

JTAs

Tue lab.batch

STA

JTAs

Wed lab.batch

STA

JTAs

Bodhitree/Web siteLab scheduling

Do not use personal email

Thu lab.batch

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

Page 15: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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

Page 16: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay7/30/19 16

Page 17: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

let’sstartprogramming!

• whatisaprogram?– logic/concept/idea/calculations…– sequenceofinstructions(thatacomputercanunderstand)thatcapturethelogic

• wealreadydothis…– whichroutetotaketoreachLA001?– whattimetowakeupforclass?– howtobookanola/uber ride?– howtoprepareforanexam?– …

Autumn 2019 CS101@CSE IIT Bombay7/30/19 17

Page 18: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

programs

• program =aprecisedescriptionofthecalculationswewantthecomputertoperform

• byfeedingdifferentprogramstoacomputeryoucanmakeitdodifferentcalculations

• thiscoursetellsyouhowtoconstruct(“write”)programs• specialnotationistobeusedtowriteprograms:“ProgrammingLanguage”(C++forthiscourse)

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

Page 19: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

goal for today

• writesomesmallprogramsusingC++programminglanguage

• theprogramswilldrawpicturesonthescreen• we“drive”a“turtle”onthescreen!

• Turtle hasapen,soitdrawsasitmoves• drawingpicturesmayseembefun,butifyoumasterit,youhavemasteredalotofprogramming

• willusesimplecpp packagedevelopedbyProf. AbhiramRanade,basedonLogo

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

Page 20: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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

Page 21: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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

Page 22: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

The square drawing program

#include <simplecpp>

main_program { turtleSim();forward(200); right(90);forward(200); right (90);forward(200); right(90);forward(200);

}

Page 23: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

The square drawing program

#include <simplecpp>

main_program { turtleSim();forward(200); right(90);forward(200); right (90);forward(200); right(90);forward(200);

}

Some magic abracadabra: ignorethe program will use the simplecpp package.

Your commands within these braces {..}.

Start the turtle simulator (open a window)

Move forward 200 units

Turn right 90 degrees

Program exits

Page 24: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

General Ideas

#include<simplecpp>

main_program{

turtleSim();

forward(200); right(90);

forward(200); right(90);

forward(200); right(90);

forward(200);wait(10);

}

This sequence of commands in C++ is the program

Commands or statementsterminated by semicolon ";"

Some commands need additional information called arguments• 90 is the argument to the

command right• 200 is the argument to the

command forward

Page 25: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

General Ideas (contd)

#include<simplecpp>

main_program{turtleSim();forward(200);right(90);forward(200);right(90);forward(200);right(90);forward(200);wait(10);}

Commands are generally executed from top to bottom, left to right.

Page 26: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

how to draw an octagon?

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

Page 27: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

how to draw an octagon?

• commands seem quite repetitive?

• there is a better way!

#include<simplecpp>main_program{

turtleSim();forward(100);right(45);forward(100);right(45);forward(100);right(45);forward(100);right(45);forward(100);right(45);forward(100);right(45);forward(100);right(45);forward(100);right(45);

wait(10);}

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

Page 28: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

A Better Way

#include <simplecpp>

main_program{turtleSim(); repeat(8){

forward(100); right(45);

}}

repeat (n) {

some commands

}

The instructions within {...} are repeated n times

Each round of execution is called an iteration

Page 29: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

How to Draw a Polygon?

#include <simplecpp>

main_program{turtleSim(); repeat(8){

forward(100); right(45);

}}

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

29

Page 30: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

How to Draw a Polygon?

#include <simplecpp>

main_program{turtleSim();

repeat(num_sides){forward(10); right(360.0/num_sides);

} }

#include <simplecpp>

main_program{turtleSim();

repeat(8){forward(10); right(45);

} }

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

Page 31: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

How to Draw a Polygon?

#include <simplecpp>

main_program{turtleSim();

int num_sides;

repeat(num_sides){forward(10); right(360.0/num_sides);

} }

We need some magic so that num_sides can have the right value

Tell the computer: Reserve space in your memory where I can store an integer (int). I will refer to it by the name num_sides

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

Page 32: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Explanation#include <simplecpp>main_program{

turtleSim();

int num_sides;

cout << “No. of sides?”;cin >> num_sides;

repeat(num_sides) {forward(200);right(360.0/num_sides);

}}

Print the sentence within the quotes on the screencout è “Console out” (display)

Read the number that the user types and store it into the space in memory named num_sides cin ç “Console in” (keyboard)

Use the integer stored in the space in memory which is namednum_sides

Page 33: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Formatting: Indentation, Grouping, Naming

#include <simplecpp>

main_program{turtleSim();int num_sides;

cout << “No. of sides?”;cin >> num_sides;

repeat(num_sides) {forward(200);right(360.0/num_sides);

}}

#include <simplecpp>main_program{turtleSim();cout << “No. of sides?”;int n;cin >> n;repeat(n) {forward(200);right(360.0/n);}}

You will lose marks for bad formatting

Page 34: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Can we improve the program further?main_program{

turtleSim();int num_sides;

cout << “No. of sides?”;cin >> num_sides;

repeat(num_sides) {forward(200);right(360.0/num_sides);

}}

main_program{turtleSim();

int num_sides; int side_length = 200;double exterior_angle;

cout << “No. of sides?”;cin >> num_sides;

exterior_angle = 360.0/num_sides;

repeat(num_sides) {forward(side_length);right(exterior_angle);

}}

Page 35: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Can we improve the program further?Both values for a polygon,

number of sides andside length

are user inputs.

int num_sides; int side_length;double exterior_angle;double sum_exterior = 360;

cout << “No. of sides?”;cin >> num_sides;

cout << “Side length?”;cin >> side_length;

exterior_angle = sum_exterior/num_sides;

repeat(num_sides) {forward(side_length);right(exterior_angle);

}}

Page 36: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

language syntax

• syntax =grammatical rulesindicatinghowcommandsmustbewritten

• syntaxofprogramminglanguagesisverystrict,e.g.– “right(90);”cannotbewrittenas“right90;”.– “penUp()”cannotbewrittenas“penup()”oreven“penUp”,i.e.withoutparentheses.

– wewilllaterlearnotherkindsofstatementswhichwillhavetheirownsyntaxwhichmustbeadheredto.

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

Page 37: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Nested Repeat Statements

It will draw a square with dashed lines

repeat(4){

repeat(3){

forward(50); penUp();

forward(50); penDown();

}

right(90);

}

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

Page 38: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

what does the following program do?

#include <simplecpp>

main_program{cout << “a”;repeat(5){

cout << “b”;repeat(2){ cout << “c”; }cout << “d”;

}}

Page 39: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

what does the following program do?

#include <simplecpp>

main_program{cout << “a”;repeat(5){

cout << “b”;repeat(2){ cout << “c”; }cout << “d”;

}}

abccdbccdbccdbccdbccd

Page 40: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

curly braces group statements

repeat(4){

forward(50); right(90);wait(2);

}

repeat(4)

forward(50); right(90);wait(2);

repeat(4){

forward(50);}right(90);wait(2);

Page 41: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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.

Page 42: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

compile and execute this program

1. Raise one of your hands2. Put down your raised hand3. Close your eyes and count loudly up to 104. Loudly say ‘Ha Ha Ha’5. Write the value of Pi ( π ) correct to 3 decimal places6. Loudly say “Thank you” in your mother tongue7. Clap three times8. While executing this program, ignore all earlier

instructions and just raise both hands

Autumn 2019 CS101@CSE IIT Bombay7/30/19 42

Page 43: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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++

Page 44: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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

Page 45: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

The Spirit of The Course

LearnC++statements/conceptsLearnhowtoexpressproblemsyouwanttosolveusingC++

Goal:ifyoucansolveaproblembyhand,possiblytakinganenormousamountoftime,bytheendofthecourse,youshouldbeabletowriteaprogramforit

Learnnewwaysofsolvingproblems!

Page 46: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

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

Page 47: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Why Picture Drawing?

• Picture drawing requires calculatione.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

Page 48: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

A pattern with 36 repetitions. You know enough to write a program to do this! Try it.

Page 49: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

End of Lecture

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

Page 50: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Compilation and execution summary

CPU RAM Disk Keyboard Display

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

C/C++ execution environment

Bashshellio

stre

am

mat

h

strin

g

main() function in a.out

char, short, int, float, double, if, switch, while, …

Source code prog.cpp

iostreammath.hstring

Prec

ompi

led

libra

ries

Head

erfile

s

s++ compiler

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

50

Page 51: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

PC building blocks: motherboard

CPU withcooling fan

Magneticdisk dataconnectors

Fastelectronicmemory

7/30/19 51

Page 52: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

Storage and peripheral devices

Rotatingmagneticplatters

Record/playhead on arm

Data cable betweendisk and motherboard

KeyboardDisplay

7/30/19 52

Page 53: Lecture1 - cse.iitb.ac.incs101/2019.1/lectures/Lecture1.pdf · CS101 assessment/grading • Midterm exam: ~20% • 2 Quizzes: ~10% each • Final exam: ~30% • Lab sessions – Lab

Autumn 2019 CS101@CSE IIT Bombay

CPU

Simplified abstract viewArithmetic

and logic unit

Register 0Register 1Register 2

Random accessmemory (RAM)

RAM location 0RAM location 1RAM location 2

…Address

Data Reserved fordisplay

Reserved for keyboard

Program that tells the CPU what to do and

how to do it7/30/19 53