4. Decomposition, Abstraction, and Functions

MIT 6.0001 Introduction to Computer Science and Programming in Python, Fall 2016
View the complete course: ocw.mit.edu/6-0001F16
Instructor: Dr. Ana Bell
In this lecture, Dr. Bell discusses program structuring, functions, specifications, scoping, and the difference between the "return" and "print" keywords in Python.
License: Creative Commons BY-NC-SA
More information at ocw.mit.edu/terms
More courses at ocw.mit.edu

Пікірлер: 154

  • @vi3524
    @vi35244 жыл бұрын

    Jealous of MIT students who can have such an awesome teacher; Thankful to MIT who's willing to share these awesome lectures.

  • @iitasperiant6102

    @iitasperiant6102

    Жыл бұрын

    Help bro please 🥺

  • @SK-qy5nz
    @SK-qy5nz6 жыл бұрын

    Thanks MIT for providing equal opportunity for poor people like me. I am grateful to these wonderful courses. Will try to see everything till i die....

  • @SZ-hg5fd

    @SZ-hg5fd

    6 жыл бұрын

    I immigrated from China to Canada, as you know there’s no KZread in China, so I am lucky to have such an opportunity to watch MIT courses. I am grateful to all of these!

  • @jason-ps6mf

    @jason-ps6mf

    5 жыл бұрын

    I am a Chinese from a poor village using shadowsocks to watch this awesome video

  • @kattetivikram1862

    @kattetivikram1862

    5 жыл бұрын

    Iam indian it is very useful to me .Iam computer science students in india

  • @MultiDexter92

    @MultiDexter92

    4 жыл бұрын

    Americans, where are you?

  • @jonathanhansen4282

    @jonathanhansen4282

    4 жыл бұрын

    @@MultiDexter92 Im at a top 15 Uni and am still here....

  • @jonahcornish6160
    @jonahcornish61607 жыл бұрын

    Wow, this instructor is excellent. She does a great job of comparing what you are coding to simple concepts. I am always let down when an instrucor is really intelligent but makes the material unnecesarilly convoluded to the point you woulld only be able to understand it with advanced knowledge of the subject.

  • @jakeambrose4294

    @jakeambrose4294

    6 жыл бұрын

    if u plan to keep learning it and like to network with other people who are also find me messaging my facebook page knowledge obsession if trading info and sources and solving problems with others interests u

  • @tonyravindran

    @tonyravindran

    4 жыл бұрын

    actually in the regular course the reading material and and the slides are shared beforehand for the students to prepare themselves for the lecture but we have to jump straight into the lecture

  • @aaronisinjapan
    @aaronisinjapan5 жыл бұрын

    This is honestly the best explanation of functions in python. Global and local differences are also extremely clear. Great job!

  • @user-fl7vs4ed6l
    @user-fl7vs4ed6l3 жыл бұрын

    0:02:30 How do we write code 0:04:15 Abstraction and Decomposition 0:06:09 Abstraction example 0:08:00 Decomposition 0:09:14 Abstraction 0:10:06 Functions 0:11:37 How to write and call/invoke a function 0:14:43​ In the function body 0:15:45 Variable scope 0:18:25 Variable scope example01 0:21:09 One warning if no return statement 0:22:00 0:24:00 ​0:26:25 Functions as arguments 0:28:00​ 0:30:00 0:30:57 Variable scope examples 0:34:18 ​(Link description : Some more Variable scope example) 0:35:44 ​Variable scope example 0:36:21 ​Variable scope example global scope 0:37:41 ​Variable scope example call h() 0:38:45 Variable ​scope example return to g() scope 0:39:41 Variable ​scope example return to global scope

  • @diogos3475

    @diogos3475

    3 жыл бұрын

    Real Heroes don't wear capes

  • @petor95

    @petor95

    3 жыл бұрын

    Thank you 🙏🏾

  • @Billyxiao

    @Billyxiao

    2 жыл бұрын

    Amazing

  • @rishanVJrathne
    @rishanVJrathne Жыл бұрын

    Thank You, Dr. Ana Bell . It was a nice explanation of the SCOPE.

  • @ProfitScalpKing1
    @ProfitScalpKing17 жыл бұрын

    Thanks a bunch Dr. Bell

  • @xuefengwong9097
    @xuefengwong90975 жыл бұрын

    The scope part is clear and easy to understand, thanks!

  • @DARELASISI
    @DARELASISI2 жыл бұрын

    THIS VIDEO IS PYTHON MADE EASY, THANK YOU, ANA.

  • @mustafaadelamer2789
    @mustafaadelamer27895 жыл бұрын

    thank you so much for your illustrations Dr. Ana. Very very useful.

  • @abdelkarimjaja7740
    @abdelkarimjaja77405 жыл бұрын

    Thanks, MIT for give us this opportunity

  • @akbarrauf2741
    @akbarrauf27417 жыл бұрын

    thank you ,mit

  • @mikhailskalyga9386
    @mikhailskalyga93864 жыл бұрын

    If only at my university the programming was teched like that... Idk, if it's just me, but how important the teacher in the teaching process. At my university, the lectures were boring, students were not involved in the process, and in the end, I started hating the programming classes. Now I can see how beautiful and interesting they could be

  • @user-nm9fk7cb4b

    @user-nm9fk7cb4b

    3 жыл бұрын

    This is only interesting to me because in my own time over the course of years I’ve been putting pieces together of functions within functions that leads to spontaneous, recursive creative syntax Don’t blame your teachers, if you’re bored THEN YOU’RE THE BORING ONE. That also means you know why you’re bored, so you can change it

  • @GovindKumar-mu6jq
    @GovindKumar-mu6jq3 жыл бұрын

    The way she explained about the scope of variables is awesome...

  • @aymensekhri2133
    @aymensekhri21334 жыл бұрын

    Thanks a lot Dr. Ana Bell

  • @Mokhtartba
    @Mokhtartba8 ай бұрын

    she is So Kind during Explaining and thanks for that Ana 😀 Greetings from #Morocco .

  • @alirezarezaeikalat9421
    @alirezarezaeikalat94213 жыл бұрын

    tnx MIT for make these courses public

  • @yuminkim7264
    @yuminkim72646 жыл бұрын

    a nice lecture. Thanks!

  • @goclbert
    @goclbert Жыл бұрын

    Me doing problem set 1: "Man its gonna take me a long time to be able to afford a house"

  • @blackprince3288
    @blackprince32884 жыл бұрын

    Best explanation of abstraction and decoMposition!!!!!

  • 3 жыл бұрын

    8:00 modules. Create it once, debug it once and use it many times for different projects or in your code with different inputs.

  • @Linux4Ever2011
    @Linux4Ever20115 жыл бұрын

    Thank you for such clear explanation :)

  • @MrFaiqueShakil
    @MrFaiqueShakil4 жыл бұрын

    best function lecture ever.

  • @Mujahid_Abbas
    @Mujahid_Abbas3 жыл бұрын

    Thanks Mam For Upload On U-Tube so That I am able to listen this.

  • @denniskamonde6836
    @denniskamonde68367 жыл бұрын

    great job

  • @jadenmax679
    @jadenmax6794 жыл бұрын

    Great. Thank you.

  • @dmac4u2luv
    @dmac4u2luv5 жыл бұрын

    Brilliant!

  • @strategoclownery389
    @strategoclownery389 Жыл бұрын

    can anyone tell me how she just comments out a hole block of code without doing the """ thing? That would be such a great help. Thanks

  • @mitocw

    @mitocw

    Жыл бұрын

    In IDLE, use ctrl + D to comment out many lines of code.

  • @nazeehsaifi916
    @nazeehsaifi9167 жыл бұрын

    Thank you

  • @jakeambrose4294
    @jakeambrose42946 жыл бұрын

    im lost but im just going to keep watching.

  • @pocok5000

    @pocok5000

    6 жыл бұрын

    I'm not sure that's a good idea. Watch again until you understand. Then you can understand the rest easier.

  • @LordAhmedAmr

    @LordAhmedAmr

    6 жыл бұрын

    I hope you didn't lose interest by now and that you started to wrap your head around things. if not though i would recommend watching the CS50 course from harverd it's way much easier yet very useful.

  • @rysknet

    @rysknet

    5 жыл бұрын

    Re-watch if lost. I have to rewind tough parts a couple of times until I get it. No shame in that.

  • @idontknow-ms8mc

    @idontknow-ms8mc

    5 жыл бұрын

    Udacity's Intro to Computer Science course is pretty good, as well and goes over concepts very simply. There is also a version of this course on Edx.org.

  • @MrFaiqueShakil

    @MrFaiqueShakil

    4 жыл бұрын

    @@idontknow-ms8mc It is more complex than this.

  • @samratdalal6878
    @samratdalal68783 жыл бұрын

    It's awesome.

  • @saurabhmiyani9014
    @saurabhmiyani90144 жыл бұрын

    Thanks MIT

  • @hycopa2447
    @hycopa2447 Жыл бұрын

    Thank you MIT for feeling in the gaps :)

  • @atlantic_love

    @atlantic_love

    Жыл бұрын

    I see what you did there lol. Get back to programming :D

  • @jongcheulkim7284
    @jongcheulkim72842 жыл бұрын

    Thank you.

  • @miscellany9674
    @miscellany9674 Жыл бұрын

    تحياتي للعميد بامطرف

  • @algemmegla9002
    @algemmegla90023 жыл бұрын

    35:40 Scope Details. I think it's helpful to just look at it line by line. At first I got confused with x = x + 1 because it seemed to be inside def h(), but it's actually inside def g(x). def h() is such a simple block of code, that it threw me off at first. Assign x to 3 +1. print the string 'g:x=' , h() assigns x to 'abc', but returns None. So the string, abc, stays within that scope. Calling the function, h() ,returns None. return x is typed "after" print(x) in the order. Brain slowly absorbing. def g(x): def h(): x = 'abc' x = x + 1 print('g: x =', x) h() return x x = 3 z = g(x)

  • @henrikmanukyan3152

    @henrikmanukyan3152

    7 ай бұрын

    where does h() take its "x" variable if it has neither defined nor had that argument in its definition? is this the case of using global variables that is not recommended?

  • @jayholt
    @jayholt4 жыл бұрын

    Oh man, missed a good opp to have a func_e. Regardless, loving this content. Makes me miss college 😭

  • @algemmegla9002

    @algemmegla9002

    3 жыл бұрын

    ha ha. Took me a minute.

  • @alham9656

    @alham9656

    2 жыл бұрын

    @@theerdalavignesh4443 funky

  • 3 жыл бұрын

    4:00 functions: decomposition and abstraction

  • @percih70
    @percih706 жыл бұрын

    Python tutor is awesome .......

  • @sd-xk7qr

    @sd-xk7qr

    3 жыл бұрын

    It's great. The only problem sometimes is that it stops at 1000 steps

  • @danielrio1967
    @danielrio19675 жыл бұрын

    Nice! i will come to US in few years!

  • @x15cyberrush9

    @x15cyberrush9

    5 жыл бұрын

    @@mzaje9803 who r you to say that? don't underestimate india ns and Chinese

  • @phildawg91
    @phildawg914 жыл бұрын

    so, x = 3 def f(y): print(x) works but def g(y): x =+ 1 does not work. because it's not in the functions scope. so are only operations with a variable out of scope not possible? because in either case it has to know the value of x, whether you print it or whether you do something with it. so why does the second one not work?

  • @GhostkillerPlaysMC
    @GhostkillerPlaysMC4 жыл бұрын

    39:49 If the function h() had a return at the end, would the outer function have returned x as 'abc' instead of 4?

  • @JeetSingh-kp5xq

    @JeetSingh-kp5xq

    4 жыл бұрын

    only if we assign the return of h() to x like x= h(). Otherwise 4

  • @masoudelahian613
    @masoudelahian613 Жыл бұрын

    The last example about nesting would have been better if you had written h as function of other thing that would have added to x and participate in the main function. BTW it was really a good pedagogical video.

  • @Hivlik
    @Hivlik3 жыл бұрын

    34:00 what is the difference between incrementing x and printing x? it is defined in the same place relative to g() and h()

  • @as-br9ov

    @as-br9ov

    2 жыл бұрын

    When you are trying to print it, func g is able to track down x into the global scope and get it. Yet, if you want to convert it into something, in other words if you want to implement process onto x, you have to define it first in whatever scope you are. Then you can modify it.

  • @Liaomiao
    @Liaomiao6 жыл бұрын

    why did it print with return and without return twice?

  • @aftabahmed2460
    @aftabahmed24606 жыл бұрын

    informative

  • @kattetivikram1862
    @kattetivikram18625 жыл бұрын

    Iam mca student in india.it has very useful to me

  • @peterhind
    @peterhind3 ай бұрын

    So when h returns, h in the scope of g still equals 'some code' and None is just sort of floating about in the scope of g. But when g returns, the value 4 is assigned to z because of the equals sign in the code. Is that right ? And if that's right, that means the None in the scope of g was inaccessible. Just trying to get it clear.

  • 3 жыл бұрын

    11:53 How you write a function. Parts of a function

  • @Yugandhar635
    @Yugandhar6356 жыл бұрын

    when func_a( ) is mapped to z ... then can we write return z instead of return z( ) ?

  • @nikhilkolhe2374

    @nikhilkolhe2374

    2 жыл бұрын

    no if you do that you are returning the object func_a. but when you return z(), you are returning the value of expression func_a(), which is the value returned by func_a.

  • @algemmegla9002
    @algemmegla90023 жыл бұрын

    21:50 (regarding the section on return and None) When describing remainder = i % 2, it might be easier for beginners to say: i "modulus" 2, instead of i "percent" 2. Overall, the videos are excellent. Thank you! :D

  • @leokettner636
    @leokettner6366 жыл бұрын

    The title of this lecture should be "funception"

  • @ziadanwar5296

    @ziadanwar5296

    3 жыл бұрын

    I came down searching for that comment Lmao

  • @carmenc7251
    @carmenc72513 жыл бұрын

    In the last example, where x is not defined in function g(x) should be giving an error (UnboundLocalError: local variable 'x' referenced before assignment ), isn't it? Like how the example shown in 32:42

  • @nikhilkolhe2374

    @nikhilkolhe2374

    2 жыл бұрын

    x is the formal parameter, so it well be assigned to the value of actual parameter at function call. So we should not get an error

  • @tawfeeqmuallem9086
    @tawfeeqmuallem90865 жыл бұрын

    I LLLLOOOOVVVEEE YOUUUUUUUUUUUU

  • 3 жыл бұрын

    25:00 example of a function "is even"

  • 3 жыл бұрын

    10:00 recap functions

  • @theDrake-tx1vj
    @theDrake-tx1vj7 жыл бұрын

    if suppose the function h() in the last example is called twice, does the "scope" remain or is it formed twice? pls help

  • @rootytuners

    @rootytuners

    4 жыл бұрын

    It is a fresh scope on each call.

  • @MrFaiqueShakil
    @MrFaiqueShakil4 жыл бұрын

    What's the shortcut for deleting the hash # from each line at once, like Professor Ana bell does regularly in Spyder IDE.

  • @maheraberu2000

    @maheraberu2000

    3 жыл бұрын

    strg+1

  • @zigginzag584
    @zigginzag5843 жыл бұрын

    Hello class!

  • @pianoworld_1
    @pianoworld_1 Жыл бұрын

    What a coincidence , it's also raining In my city Hyderabad Pakistan due to a cyclone.

  • @YoshBruh
    @YoshBruh4 жыл бұрын

    The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To make a donation or view additional materials from hundreds of MIT courses, visit MIT OpenCourseWare at ocw.mit.edu

  • @leixun
    @leixun4 жыл бұрын

    *My takeaways:* Function specification/docstring 13:00

  • @tcchan14
    @tcchan147 жыл бұрын

    Which lecture is required to do pset2?

  • @andreymlv

    @andreymlv

    3 жыл бұрын

    ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/syllabus/

  • @demon-godashura1661
    @demon-godashura16616 жыл бұрын

    Well i don't know why but at 27:34 when i pass the same code in my spyder it says "unexpected EOF while parsing"

  • @rootytuners

    @rootytuners

    4 жыл бұрын

    You’ve probably omitted a closing quote or bracket somewhere.

  • @edogg5690
    @edogg56906 жыл бұрын

    Can anyone ELI5 what it means to provide abstraction? She says that writing the docstring provides abstraction and I'm just not familiar with that meaning.

  • @saurabh75prakash

    @saurabh75prakash

    6 жыл бұрын

    E Dogg , Abstraction means that you need not look into the details of the function to use it( remember the projector example). The docstring provides the high level idea about the function which can help you in reusing the function in your code (without looking into the details of function's code)

  • @LXMP284
    @LXMP2847 ай бұрын

    Is it just me or is the scope structure in python eerily reminiscent of the way tangent universes are described in Donnie Darko (director’s cut)? 🤔🤔 just a thought!

  • @pricesmith8450
    @pricesmith84506 жыл бұрын

    Is it bad style to use a variable from outside the scope of a function?

  • @pricesmith8450

    @pricesmith8450

    6 жыл бұрын

    nvm.. yes.

  • @ayandamarotya9607

    @ayandamarotya9607

    6 жыл бұрын

    depends on the assignment preference of that variable you will be using... only assign global variables when you will access them from more than one function...

  • @kushagrakanungo9517
    @kushagrakanungo95174 жыл бұрын

    How come the instructor can remove the comments from the code in one go? What is the command to do it?

  • @sebastiangutierrez9650

    @sebastiangutierrez9650

    4 жыл бұрын

    highlight the comments and then do ctrl+1

  • @kushagrakanungo9517

    @kushagrakanungo9517

    4 жыл бұрын

    @@sebastiangutierrez9650 Thank you so much.

  • @GhostkillerPlaysMC
    @GhostkillerPlaysMC4 жыл бұрын

    Lol even at MIT the students begin packing up before the professor is done teaching

  • @woddlyoats

    @woddlyoats

    6 ай бұрын

    It's sad

  • @Liaomiao
    @Liaomiao6 жыл бұрын

    when you print(function_name) it just prints out what the function returns?

  • @leboyoyo

    @leboyoyo

    5 жыл бұрын

    Liaomiao yes

  • @rootytuners

    @rootytuners

    4 жыл бұрын

    @Liaomiao - actually no. print(function_name) will print the function object in memory; something like: . print(function_name()) with the parentheses will print what the function returns.

  • @EgeOnatDoguslu
    @EgeOnatDoguslu6 жыл бұрын

    Assignment: Hangman github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman

  • @pricesmith8450

    @pricesmith8450

    6 жыл бұрын

    got any of the other assignments? would love to compare some of mine

  • 3 жыл бұрын

    26:03 in python everything is an object

  • @HadeelHanaysheh
    @HadeelHanaysheh7 жыл бұрын

    why we are didn't use x ='abc' on any where ???

  • @andredc161

    @andredc161

    6 жыл бұрын

    because it never was used has a print(x) inside the function h(), and doesn´t has a return. So it returns None

  • @emansalah2766
    @emansalah27665 жыл бұрын

    Where do I get the python tutor ?

  • @estherweyinmikoloh7182

    @estherweyinmikoloh7182

    5 жыл бұрын

    pythontutor.com

  • @joaooliveira185
    @joaooliveira185 Жыл бұрын

    Based

  • @lc0414
    @lc04144 жыл бұрын

    real lecture starts at 11:00

  • @doraemongameplay5683
    @doraemongameplay56834 жыл бұрын

    im 12 and i dont understand what is func, help...

  • @tanphanvan2693
    @tanphanvan26933 жыл бұрын

    Great lecture. Anyone has the solution for the assignment? Thanks very much!

  • @quocvu9847
    @quocvu9847 Жыл бұрын

    34:34

  • @shubhankarsingh4065
    @shubhankarsingh40653 жыл бұрын

    19:23 when you hit a function call

  • @McAwesomeReaper
    @McAwesomeReaper9 ай бұрын

    She wears the same outfit for every lecture. Just an observation, not a criticism. It's a nice outfit that strikes the perfect balance, I can see why she settled on this look in particular.

  • @alexandrugheorghe5610
    @alexandrugheorghe56109 ай бұрын

    29:03 "so z is func_c" should have been "so z is func_a"

  • @dani7599
    @dani75996 жыл бұрын

    I love the fact that American students are pretty confident to claim that they can make projectors using given components after the professor asked about it. In my country and in UK, nobody wants to look smart even though they are able to do the same.

  • @ashen1970
    @ashen19705 жыл бұрын

    Whoever edited this open courses must didn’t want to leak the major part of MIT’s succeed in education.

  • @riccardovasellini6570
    @riccardovasellini65704 жыл бұрын

    Does anyone know how she deletes all the # character at once?

  • @DaljitSingh-ei9re

    @DaljitSingh-ei9re

    4 жыл бұрын

    'Ctrl' + '/'

  • @simarmalhan6527
    @simarmalhan65272 жыл бұрын

    Pam beesly

  • @bobanmilisavljevic7857
    @bobanmilisavljevic78575 ай бұрын

    🦾🤠🇺🇲

  • @devzoi3715
    @devzoi37155 жыл бұрын

    i didnt use it my mom did

  • @hamids4550
    @hamids45506 жыл бұрын

    I was okay until you got to the last example. Totally lost you :P I'll keep watching it until i get it. Thanks for posting

  • @sridharr8306

    @sridharr8306

    6 жыл бұрын

    Try to do that bit by yourself, using python tutor. It will be clear

  • @kunjs3687
    @kunjs36874 жыл бұрын

    IM 11 AND MY DAD IS EXPECTING ME TO UNDERSTAND THESE VIDEOS. I CAN'T UNDERSTAND ONE BIT< SO MY DAD IS GETTING REALLY MAD AT ME. CAN U PLEASE MAKE SOME VIDEOS THAT I MAY UNDERSTAND

  • @mitocw

    @mitocw

    4 жыл бұрын

    We recommend you try the materials through the Edx course. It just started today! It has a place to get help and ask questions. www.edx.org/course/introduction-to-computer-science-and-programming-7. Also, if this course is still confusing try another resource/course. There are many available. Another view can help. Also, if English is not your native language, try a course that is in your language. Best wishes on your studies!

  • @woddlyoats

    @woddlyoats

    6 ай бұрын

    If your dad is getting mad then he is a really pathetic person.

  • @LordAhmedAmr
    @LordAhmedAmr6 жыл бұрын

    any one here solved the 'hangman' assignment

  • @EgeOnatDoguslu

    @EgeOnatDoguslu

    6 жыл бұрын

    github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman

  • @yukeyang5735
    @yukeyang57355 жыл бұрын

    Why is the teacher always in the same outfit?Curious.

  • @woddlyoats

    @woddlyoats

    6 ай бұрын

    It's her look

  • @daveyjones9699
    @daveyjones96994 жыл бұрын

    These cameramen really suck at focusing on the slides. I don't need to see her face while she's explaining the slides. These videos are hard to watch and take notes on 2x speed.

  • @avinashdwivedi2015
    @avinashdwivedi20155 жыл бұрын

    Clickbait