Final exam on Monday 8 December from 1 to 3PM in LC A4.

Course Content

The text books for this course are

Slides of the lectures and Python code will be posted below:

L-1 Mon 25 Aug 2008: welcome to mcs 260 (printer friendly version )
L-2 Wed 27 Aug 2008: computer architecture -- first steps with Python -- binary numbers -- using Sage (printer friendly version ) our first Python programs hello.py and hello_there.py
L-3 Fri 29 Aug 2008: the von Neumann machine -- using Python as a calculator (printer friendly version )
L-4 Wed 3 Sep 2008: numbers, variables, and assignments -- developing Python programs (printer friendly version ) Python program yieldbal.py
L-5 Fri 5 Sep 2008: operating systems -- strings, lists, and tuples in Python (printer friendly version )
L-6 Mon 8 Sep 2008: mass storage, files and databases -- dictionaries in Python (printer friendly version ) Python code: mileage.py and miletab.py
L-7 Wed 10 Sep 2008: syntax and semantics of languages -- input and output formats (printer friendly version )
L-8 Fri 12 Sep 2008: boolean algebra -- flowcharts -- conditional constructs in Python (printer friendly version ) Python code: passfail.py , gradecurve.py , and followup.py .
L-9 Mon 15 Sep 2008: transistors and logic gates -- intrinsic operations on numbers and strings (printer friendly version ) Python code: alphatest.py and write_numbers.py
L-10 Wed 17 Sep 2008: flip-flops and registers -- intrinsic operations on lists: queues and stacks (printer friendly version ) Python code: sortwords.py , write_values.py , and hanoi3.py .
L-11 Fri 19 Sep 2008: adder circuits -- loop constructs: the while and for (printer friendly version ) Python code: showbal.py , showfor.py , and gcd.py .
L-12 Mon 22 Sep 2008: simulation using random numbers -- binary expansion with repeat until: break (printer friendly version ) Python programs randuse.py , mc4pi.py , binexp1.py , binexp1b.py , binexp1c.py , and findelem.py .
L-13 Wed 24 Sep 2008: top down design of programs -- functions in Python (printer friendly version ) Python code npdf.py , use_npdf.py , and simuwait.py .
L-14 Fri 26 Sep 2008: local and global variables -- arguments of functions -- functions using functions (printer friendly version ) Python code votes1.py , votes2.py , area.py , area2.py , and traprule.py .
L-15 Mon 29 Sep 2008: functional programming -- lambda forms -- list comprehensions (printer friendly version ) Python programs oracle.py , evalshow.py , calculator.py , and mc4pi2.py .
L-16 Wed 1 Oct 2008: review of the first 15 lectures with answers (printer friendly version )
L-17 Fri 3 Oct 2008: first midterm exam: version a with answers; version b with answers.
L-18 Mon 6 Oct 2008: software engineering -- bottom up design of programs -- modules in Python (printer friendly version ) Python modules: stack_data.py, stack_of_data.py, and stack_of_data_io.py, tested by stack_user.py.
L-19 Wed 8 Oct 2008: the software development cycle and quality -- modular design with Python (printer friendly version ) Python modules: quand.py, questions.py, and dialogue.py, called by quiz.py.
L-20 Fri 10 Oct 2008: software licensing and open source -- modules and packages (printer friendly version ) We made a package of the modules of L-19.
L-21 Mon 13 Oct 2008: organization of data on files -- manipulating files with Python (printer friendly version ) Python module: bkform.py, the file books, and program library.py.
L-22 Wed 15 Oct 2008: data compression -- format conversions -- using buffers to process files (printer friendly version ) Python code: bkform2list.py , bklist2dict.py , scramvow.py , cntword.py , locword.py , and repword.py .
L-23 Fri 17 Oct 2008: archiving files, pipes -- the os module and directory methods (printer friendly version ) Python code: firstline.py , maxfile.py , delpyc.py , and ibmstock.py .
L-24 Mon 20 Oct 2008: object-oriented programming -- unified modeling language -- classes in Python (printer friendly version ) Python classes: classbook.py , classperson.py , classcatalog.py , classpeople.py , and the main program libclassman.py .
L-25 Wed 22 Oct 2008: data and functional attributes of classes -- operator overloading (printer friendly version ) Python class FlopFloats , used by flopsum , and the class Quaternion .
L-26 Fri 24 Oct 2008: encapsulation, inheritance, polymorphism -- wrapping and delegation (printer friendly version ) Python classes: class Poly , class Point , class Point (with private data), class Circle , used by the script pointcircle.py , and finally, the encapsulation of turtle graphics: spirbot.py .
L-27 Mon 27 Oct 2008: software testing, verification techniques -- pre- and postconditions with assert (printer friendly version ) Python code: useassert.py
L-28 Wed 29 Oct 2008: exception handling -- defining, raising, and handling exceptions in Python (printer friendly version ) Python code: readfilename.py, readfilename1.py, readfilename2.py, readfilename3.py, cntrlc.py, ratraise.py, estimpi.py, and anytimepi.py.
L-29 Fri 31 Oct 2008: complexity and cost -- complexity classes -- timing Python programs (printer friendly version ) Python code: flopfloats.py, floppoly.py, sortrandnumb.py, time_iftry.py, time_sin.py, time_filework.py, and time_listcomp.py.
L-30 Mon 3 Nov 2008: graphical user interfaces -- using Tkinter, a GUI toolkit for Python (printer friendly version ) Python code: sliding_puzzle.py , guihello.py, guihello2.py, usegrid.py, guiradio.py, guicheck.py, and mousedraw.py,
L-31 Wed 5 Nov 2008: expression evaluation -- graphing functions -- using the Canvas widget (printer friendly version ) Python code: dyneval.py, guieval.py, guievaloo.py, pentagram.py, samplefun.py, and guisample.py.
L-32 Fri 7 Nov 2008: entering data with a scale -- the development of animations (printer friendly version ) Python code: showscale.py, exscale0.py, exscale1.py, exscale2.py, slidedot.py, and movedot.py.
L-33 Mon 10 Nov 2008: networking and the internet -- markup languages -- client/server networks (printer friendly version ) Python code: forecast.py and showtime.py.
L-34 Wed 12 Nov 2008: review for second midterm Some answers and hints are here (printer friendly version ). Some Python code: parsecal.py, MyUname.py, and guipin.py.
L-35 Fri 14 Nov 2008: second midterm exam: version a with answers, the GUI for the last question ; version b with answers, the GUI for the last question .
L-36 Mon 17 Nov 2008: dynamic web pages -- introduction to CGI: running Python code on the web (printer friendly version ). HTML code loginpage.html and CGI script validate.py . Python script to generate HTML code: webtime.py .
L-37 Wed 19 Nov 2008: relational design of databases -- query languages -- MySQL and MySQLdb (printer friendly version ).
L-38 Fri 21 Nov 2008: topologies of computer networks -- layers and protocols -- using sockets in Python (printer friendly version ). Python code: tcp_server.py and tcp_client.py; clockserver.py , clockclient.py , and clockserver1.py .
L-39 Mon 24 Nov 2008:
processes and threads -- lifecycle of a thread -- multithreaded programming (printer friendly version ). Python code: hello_threads.py , hello_threading.py , classproducer.py , classconsumer.py , and prodcons.py .
L-40 Wed 26 Nov 2008: web servers -- interactive web pages with Python (printer friendly version ).
L-41 Mon 1 Dec 2008: review of the first 15 lectures Some answers: code for question 10 , code for question 11 , code for question 12 , code for question 14 , code for question 15
L-42 Wed 3 Dec 2008: review of material up to second midterm Some answers: code for question 4 , code for question 5 , code for question 11 , code for question 14 , code for question 15
L-43 Fri 5 Dec 2008: cumulative review

Final exam on Monday 8 December, 1:00PM-3:00PM in LC A4.