Difference between revisions of "CSC231 Schedule 2010"

From dftwiki3
Jump to: navigation, search
(Created page with ' =Weekly Schedule= {| style="width:100%" border="1" |- style="background:#ffdead;" |'''Week''' || '''Topics''' || '''Reading''' |-valign="top" |width="15%"| Week 1 <br /> 9/05…')
 
(Weekly Schedule)
Line 6: Line 6:
 
|'''Week''' || '''Topics''' || '''Reading'''  
 
|'''Week''' || '''Topics''' || '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
+
|width="15%"| Week 1 <br /> 9/08
|width="15%"| Week 1 <br /> 9/05
 
 
|width="60%"|
 
|width="60%"|
* [[CSC231_First_Program | first program]]
+
*
* assembling programs
 
* first look at Pentium processor. [http://www.intel.com/pressroom/archive/photos/p4_photos.htm?iid=ipp_850echpst+relate_pr& Photos].
 
* Outputing text in assembly
 
* memory map of a program
 
* [[CSC231_skeleton_program | skeleton program]]
 
* [[media:CSC231_Bare_and_Skeleton_version.pdf | Bare versus Skeleton versions]]
 
* A [[CSC231_Hello_World_on_Mac | hello-world program]] for the Mac OSX. More info on Mac OS X system calls can be found [http://www.freebsd.org/doc/en_US.ISO8859-1/books/developers-handbook/x86-system-calls.html here ][[CSC231 Final Exam 12/08|.]]
 
 
 
 
----
 
----
  
* '''Mini lab''': [[CSC231_Lab_1 | Lab #1 ]]
+
*  
|| Chapter 1 in the [http://cs.smith.edu/~thiebaut/ArtOfAssembly/artofasm.html Art of Assembly].
 
Also Chapter 3, Sections 0 to 3.1.2.
 
Sections 1.3.1, 1.3.2, 1.3.3, 1.3.4, and 1.3.5 in Carter's [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf PC Assembly Language].
 
 
 
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 2 <br /> 9/08
+
| Week 2 <br /> 9/13
 
||  
 
||  
* First introduction to the Pentium processor.  Registers, ALU, Control Unit, Busses, Memory
+
*
* [[CSC231_Exercises_Binary_Hexadecimal | Exercises]] on binary, decimal, hexadecimal system
 
* [http://www.willamette.edu/~gorr/classes/cs130/lectures/BinaryConversion/convert.html Bin/Dec/Hex converter]
 
* [[CSC231_listing_file | Listing file]] with assembly and opcodes
 
* [[media:CSC231_StepByStepInstruction.pdf | Step by Step]] execution of instructions
 
* [[CSC231_ReverseEngineering.lst | Exercise]] on reverse engineering.  [[CSC231_ReverseEngineeringSol.asm | Solution]]
 
* The '''mov''' instruction.  Syntax.  Operands
 
* Units of storage: nybble, byte, word, double-word
 
* The '''add''' instruction.
 
* Using the '''ddd''' debugger
 
 
 
 
----
 
----
  
* [[CSC231_Homework_1 | Homework #1]] and [[CSC231_Homework_1_Solution | Solution ]]
+
*
* [[CSC231_Lab_2 | Lab #2]]
 
 
||  
 
||  
*[http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH03/CH03-1.html Basic computer organization], Sections 3.0, 3.1, 3.3.1
+
*
*[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation.html#998846  Review of data representation]
 
*[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation2.html#998917 Bits, nybbles, bytes]
 
*[http://webster.cs.ucr.edu/AoA/Linux/HTML/DataRepresentation3.html#1012324 The hex system]
 
 
 
 
|- valign="top"
 
|- valign="top"
| Week 3 <br /> 9/15
+
| Week 3 <br /> 9/20
 
||
 
||
* Review of last lab
+
*----
** [[CSC231_Add5.asm | add5.asm]]
 
** [[CSC231_ComputeFib7.asm | computeFib7.asm]]
 
* new instructions
 
** add, sub, inc, dec, loop
 
** [[CSC231_Loop_Exercises | Exercises]]
 
* Binary adders, [http://en.wikipedia.org/wiki/Boolean_algebra_(introduction) Boolean Algebra], and the ALU
 
* Signed and unsigned numbers
 
----
 
  
* [[CSC231_Homework_2 | Homework #2]] and its [[CSC231_Homework_2_Solution | Solution]]
+
*
* [[CSC231_Lab_3 | Lab #3]]
 
 
||  
 
||  
Signed and unsigned numbers are covered in
+
*
[http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] and
 
[http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chap. 2]
 
[http://en.wikipedia.org/wiki/Boolean_algebra_(introduction) Boolean Algebra]
 
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 4 <br /> 9/22
+
| Week 4 <br /> 9/27
 
||
 
||
* A [[CSC231_OverFlow_C_Program | C program]] that overflows
+
*----
* A [[CSC231_OverFlow_Python_Program | Python program]] that overflows (or does it?)
+
*
* How do we represent signed numbers?
 
* What formats are available?
 
** Signed magnitude
 
** 1's complement
 
** 2's complement
 
* Why the binary adder dictates what we choose
 
* [[CSC231_Mystery_C_Program_with_signed_numbers | Mystery C Program]]
 
*[http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html Hex/Bin/Decimal converter]
 
*  <font color="purple">'''Project starts!'''</font> (on Friday)
 
----
 
* [[CSC231_Homework_3 | Homework #3]] and its [[CSC231_Homework_3_Solution | Solution]]
 
* [[CSC231_Lab_4 | Lab #4]]
 
 
||  
 
||  
*The signed and unsigned representations of numbers are covered in [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] of The Art of Assembly, and in [http://maven.smith.edu/~thiebaut/classes/231_0607/doc/pcasm-book.pdf Chapter 2] of Carter's PC Assembly Language.
+
*
 
 
*[http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH04/CH04-2.html#HEADING2-1 Addressing modes] are covered in Chapter 4 of The Art of Assembly. We won't cover "Displacement Only Addressing" modes (Section 4.6.2.1). Mentally replace 16-bit registers by 32-bit registers when reading this section. 
 
  
 
|- valign="top"
 
|- valign="top"
| Week 5 <br /> 9/29
+
| Week 5 <br /> 10/04
 
||
 
||
* Arduino hardware info
+
*----
* Addressing modes
+
*
** inherent
 
** register
 
** immediate
 
** direct
 
** indirect/based/indexed
 
** indirect with displacement
 
** base-indexed
 
** base-indexed with displacement
 
* [http://www.asciitable.com/ Ascii Table]
 
* [[CSC231_Addressing_Mode_Exercises | Exercises on addressing modes]]
 
* '''SHR''' and '''ADC''' instructions.
 
* [http://cs.smith.edu/~thiebaut/classes/231/bmp/ BMP] processing programs and picture files.
 
----
 
* [[CSC231_Homework_4 | Homework #4]] and its [[CSC231_Homework_4_Solution | solution ]]
 
* [[CSC231_Lab_5 | Lab #5]] (NOT!  Mountain Day!)
 
 
||  
 
||  
Read/continue reading on ''Addressing Modes''
+
*
 +
 
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 6<br /> 10/06
+
| Week 6<br /> 10/11
 
||
 
||
* '''Monday''': Burton B17: [[CSC231_Lab_5 | Lab #5]]
+
* '''Monday''': '''Fall Break'''  
* '''Wednesday''': Bass 102
 
** -----------
 
** Exploring the [http://arduino.cc/en/uploads/Main/Arduino-Diecimila-schematic.pdf schematics] of the Arduino
 
** Recipes of [http://www.seattlerobotics.org/encoder/mar97/basics.html simple circuits]
 
** -----------
 
** More logic instructions AND, OR, NOT, XOR, SHL, SHR.
 
** [http://heim.ifi.uio.no/~stanisls/helppc/idx_assembler.html HelpPC] resource
 
* '''Friday'''
 
** Burton B17: <font color="purple">'''Project early proposal (5min)'''</font>
 
 
||  
 
||  
* Read the [http://www.tinker.it/en/uploads/v3_arduino_small.pdf Arduino "Low-Tech Manual"]: great reading for the project.
+
*
* Chapters 2, 3, 7, and 8 of [http://www.parallax.com/dl/docs/books/edu/wamv2_1.pdf What's a MicroController?]
 
 
 
  
 
|- valign="top"
 
|- valign="top"
| Week 7 <br /> 10/13
+
| Week 7 <br /> 10/18
 
||  
 
||  
* Fall Break--No class on Monday
+
*
* '''Wednesday''':  Continuation of [[CSC231_Lab_5 | Lab #5]]
 
*  '''Friday ''': <font color="red">'''in-class Midterm Exam'''</font>.  [[CSC231_Midterm_Preparation| Midterm Prep]]
 
* <!--'''Friday 10/17''': Soldering lab in McC basement (Greg Young, Eric Jensen)<br /> -->
 
 
----
 
----
* [[CSC231_Homework_5 | Homework #5]]
+
*
* [[CSC231_Lab_5 | Lab #5]]
 
 
||  
 
||  
 +
*
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 8 <br /> 10/20
+
| Week 8 <br /> 10/25
 
||
 
||
* '''Monday''' (Bass):
+
*
** Functions, Call &amp; Ret instructions.
 
** Push/Pop, Pushad/Popad instructions
 
** [[CSC231_Exercises_On_Functions | Exercises on Functions]] 
 
* '''Friday''' (Burton): <font color="purple">'''Project final proposal (10 min)'''</font>
 
 
----
 
----
* [[CSC231 Homework 6 | Homework #6]] and its [[CSC231 Homework 6 Solution | solution]]
+
*  
  
 
||  
 
||  
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-160 Push and Pop]
+
*
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-98 Call and Ret]
+
 
 
|- valign="top"
 
|- valign="top"
| Week 9 <br /> 10/27
+
| Week 9 <br /> 11/01
 
||
 
||
* '''Monday''':
+
*  
** [[CSC231 Flags Settings Examples | A program that compares]] operands and shows flag values
 
** Conditional jumps
 
** [[CSC231 Exercises with conditional jumps | Exercises on conditional jumps]][[CSC231 Exercises with conditinal jumps Solutions |.]]
 
 
 
* '''Wednesday''':
 
** Project feedback, questions.
 
** [[CSC231 Exercises with conditional jumps | Continuation of exercises on conditional jumps]] and their [[CSC231 Exercises with conditinal jumps Solutions | (solution)]]
 
* '''Friday''': Lab in Burton: communication between PC and Arduino
 
 
----
 
----
* [[CSC231 Homework 7 | Homework #7]]
+
*
* [[CSC231 Lab 6 | Lab #6]]
 
  
 
||  
 
||  
* The [http://www.handyboard.com/techdocs/hbmanual.pdf Handy Board Technical Reference] (pdf).  Check Section 5 out: it contains very good information on connecting and using various sensors for the projects!
+
*  
* [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-226 Conditional Jumps]
 
  
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 10 <br /> 11/03
+
| Week 10 <br /> 11/08
 
||
 
||
* '''Monday'''
+
*
** [http://webster.cs.ucr.edu/Page_Linux/LinuxSysCalls.pdf Linux system calls]
 
** [[Media:CSC231_File_IO_In_Assembly.pdf |  File I/O in Assembly]] (pdf)
 
*** [[CSC231 createFile.asm | createFile.asm ]]
 
*** [[CSC231 readFile.asm | readFile.asm ]]
 
*** [[CSC231 readWriteTextFile.asm | readWriteTextFile.asm]]
 
** Functions and Passing parameters
 
*** [[CSC231 SumProc1.asm| sumproc1.asm]]
 
*** [[CSC231 SumProc2.asm| sumproc2.asm]]
 
*** [[CSC231 SumProc3.asm| sumproc3.asm]]
 
*** [[CSC231 SumProc4.asm| sumproc4.asm]]
 
*** [[CSC231 SumProc5.asm| sumproc5.asm]]
 
 
----
 
----
* [[CSC231 Homework 8 | Homework #8]] and its [[CSC231 Homework 8 Solution | solution]].  A modified version of [[CSC231 Modified Arduino-serial.c| arduino-serial.c]] for testing the homework program.
+
*
 +
 
  
* [[CSC231 Lab 7 | Lab #7]]
 
 
||  
 
||  
* [http://webster.cs.ucr.edu/Page_Linux/LinuxSysCalls.pdf Linux System Calls].  Section 1.1 shows the equivalence between registers and parameters.  Section 3.3 explains how to interpret the parameters used by a system call.  Appendix A lists all the system calls and the parameters. 
+
*
 +
 
 
|- valign="top"
 
|- valign="top"
| Week 11 <br /> 11/10
+
| Week 11 <br /> 11/15
 
||
 
||
* '''Monday'''
+
*
** File I/O
 
*** [[CSC231 createFileProc.asm| createFile.asm]] (with functions)
 
*** [[CSC231 readFileProc.asm | readFile.asm]] (with functions)
 
*** [[CSC231 createBinaryFile.asm | createBinaryFile.asm]]: creates a binary file.  Look at it with <tt>od -t x1 data.bin</tt>, or <tt>od -t x4 data.bin</tt>.
 
** Macros
 
* '''Wednesday''': Lab in Burton
 
** [http://www.youtube.com/watch?v=1ZjdiRxr0OM How to solder wires]
 
** [http://www.youtube.com/watch?v=6QznAAwL8rI How to solder wires], from Popular Mechanics
 
** [http://www.youtube.com/watch?v=krxTfZCFptk How to maintain your soldering iron clean]
 
** [http://www.youtube.com/watch?v=d-j98tkAbh8 How to heat shrink] wires
 
  
* '''Friday''': no class (work on your project!!!)
+
*
 
----
 
----
* [[CSC231 Homework 9 | Homework #9]] and its [[CSC231 Homework 9 Solution | solution]].
+
*
 +
 
 
||  
 
||  
* [http://www.tortall.net/projects/yasm/manual/html/nasm-multi-line-macros.html Nasm Macros]
+
*
* new Linux commands:
+
 
** od (octal-dump)
 
** hexdump
 
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 12 <br /> 11/17
+
| Week 12 <br /> 11/22
 
||
 
||
* '''Monday'''
+
*
** '''Recursion''' and '''reentrancy'''.  Reentrant programs must not modify global variables!
+
* Wednesday: '''Thanksgiving Break'''
** ''Recursion rule'': '''1)''' stopping condition, '''2)''' recurse on a smaller problem than one given.
+
* Friday: '''Thanksgiving Break'''
** [[CSC231_factorial.asm | factorial.asm]]
 
* '''Wednesday'''
 
** Two programs related to the current hw assignment: [[CSC231 driver2.c|driver2.c]], and [[CSC231 writeIntegerAtIndex.asm|writeIntegerAtIndex.asm]]
 
** Lab in Burton: Make it work!  Develop the hardware/software pairs: each hardware sensor should have an assembly language routine that either knows how to read from it, or to write to it.
 
 
 
* '''Friday''': Presentation of working hardware
 
 
----
 
----
* [[CSC231 Homework 10 | Homework #10]] and its [[CSC231 Homework 10 Solution| Solution]]
+
*
 
||  
 
||  
*the [http://maven.smith.edu/~thiebaut/ArtOfAssembly/CH05/CH05-1.html#HEADING1-4 LEA] instruction: an more powerful alternative to '''mov''' when loading up a vector.
+
*
* [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Section 2.1.3] of Carter's Assembly Manual on the MUL instruction (and IMUL).
+
 
  
 
|- valign="top"
 
|- valign="top"
| Week 13 <br /> 11/24
+
| Week 13 <br /> 11/29
 
||
 
||
[[Image:turkey.gif | right]]
+
*
* '''Monday''':
 
** Presentation of working projects (carry over from Friday)
 
** Current homework ([[CSC231 binarySearch.py | binary search]])
 
** recursion
 
** simulating communication with an Arduino stamp
 
* '''Wednesday''': <font color="orange">Thanksgiving break</font>
 
* '''Friday''': <font color="orange">Thanksgiving break</font>
 
 
||
 
||
* Section 4.8 of [http://cs.smith.edu/~thiebaut/classes/231_0405/doc/pcasm-book.pdf Carter's Assembly Manual] on recursion
+
*
* [http://docs.hp.com/en/B3921-90010/gettimeofday.2.html get time of day function]
+
 
* [http://en.wikipedia.org/wiki/Binary_search all about binary search]...
 
* [http://wiki.answers.com/Q/Assembly_language_program_to_do_binary_search A good example] of how '''not''' to document a program...
 
 
|- style="background:#eeeeff" valign="top"
 
|- style="background:#eeeeff" valign="top"
| Week 14 <br /> 12/01
+
| Week 14 <br /> 12/06
 
||
 
||
* '''Monday''':
+
*  
** Hardware Interrupts (simplified)
 
** Sharing interrupts
 
** Interrupting the processor
 
** Processor response to an interrupt and stack usage
 
* '''Wednesday'''
 
** [[CSC231_How_to_play_a_wav_file_in_C | Playing wav files]]
 
** Interrupts:
 
** Priority encoder
 
*** Some [[CSC231 Hard-Disk Arduino Project: some numbers | numbers]] related to Hard-disk project
 
*** Average response time
 
*** Alternatives to interrupts: polling
 
*** Arduino Interrupt-related functions
 
**** [http://arduino.cc/en/Reference/AttachInterrupt AttachInterrupt] function
 
**** [http://www.arduino.cc/en/Reference/Millis Millis] function
 
**** [http://arduino.cc/en/Reference/Delay Delay] function
 
**** [http://arduino.cc/en/Reference/DelayMicroseconds DelayMicroseconds] function
 
**** An [[CSC231 Arduino Interrupt Program Example | Interrupt Program]].  [http://www.arduino.cc/en/Reference/Volatile Volatile] variables.
 
* '''Friday'''
 
** [[CSC231 GetLocalTime.asm| Getting the local time]] in assembly
 
** [http://maven.smith.edu/~thiebaut/classes/231/floatingpoint.html Floating-Point Converter] applet.
 
 
----
 
----
*[[CSC231 Homework 11 | Homework 11]]
+
*
*[[CSC231 Lab 8 | Lab #8]]
 
 
||  
 
||  
* [http://blogs.msdn.com/adioltean/archive/2004/12/21/329321.aspx Article] on number of interrupts, context swaps, read/write operations per second in a typical Windows machine.
+
*
* [http://www.scs.carleton.ca/~sivarama/asm_book/asm2ed_slides/slides/al2ed_chapter14.ppt PPT Presentation] on interrupts from Carleton.
+
 
* [http://www.xml.com/ldd/chapter/book/ch09.html Chapter 9] of O'Reilly's ''Linux Device Drivers''.  Good for general overview.  Don't worry about the details.
+
 
<br />
 
<br />
 
* [http://en.wikipedia.org/wiki/Floating_point General description] of the floating-point notation
 
* [http://www.python.org/doc/2.5.2/tut/node16.html A very good description of the limitations] of floating-point numbers in Python: Read it!
 
* Also, not to be missed: [http://www.lahey.com/float.htm  The perils of floating-point]
 
* [http://www.programmers-corner.com/tutorial/31?PHPSESSID=4bbf1f2b76df390e1bad01a9f8462854 Floating Point in Assembly]: some high level stuff!
 
 
|- valign="top"
 
|- valign="top"
| Week 15 <br /> 12/08
+
| Week 15 <br /> 12/13
 
||
 
||
* '''Monday''': Floating-point numbers
+
* '''Monday''': '''Last Class'''
* '''Wednesday''': Last Class  
+
 
** Hardware presentation by Le
 
** Floating-Point Format
 
*** [[CSC231 Float1.asm | float1.asm]]: printing a float in assembly
 
*** [[CSC231 Float2.asm | float2.asm]]: transforms an int into a float
 
*** [[CSC231 Float3.asm | float3.asm]]: computes  a = 10.5; b = 5.5; y = 3 * ( a - b ) + PI in assembly.
 
** [[CSC231 generateRandomNumbers.asm | generateRandomNumbers.asm]]
 
<!--** [[CSC231 maze.asm | maze.asm]]: recursive visit of a maze-->
 
** [[CSC231 Ansi Sequences | Ansi sequences]]
 
** [[CSC231 Final Exam 12/08|  Optional Take-Home Exam]]
 
*  <font color="#00CC66">'''Thursday''': Pre-examination begins</font>
 
 
||  
 
||  
  
Line 313: Line 144:
 
| Week 16 <br /> 12/15
 
| Week 16 <br /> 12/15
 
||
 
||
* <font color="#00CC66">'''Monday''': Pre-examination ends</font> (DT away)
+
*
* <font color="purple">'''Tuesday''': Exam Period</font>
 
*  <font color="purple">'''Wednesday''': Exam Period</font> '''12:00p.m.--2:00p.m. Project Presentation in B17'''
 
*  <font color="purple">'''Thursday''': Exam Period</font>
 
*  <font color="purple">'''Friday''': Exam Period (last day of the semester)</font>
 
 
||  
 
||  
  

Revision as of 10:43, 1 September 2010

Weekly Schedule

Week Topics Reading
Week 1
9/08

Week 2
9/13

Week 3
9/20
  • ----
Week 4
9/27
  • ----
Week 5
10/04
  • ----
Week 6
10/11
  • Monday: Fall Break
Week 7
10/18

Week 8
10/25

Week 9
11/01

Week 10
11/08


Week 11
11/15

Week 12
11/22
  • Wednesday: Thanksgiving Break
  • Friday: Thanksgiving Break


Week 13
11/29
Week 14
12/06


Week 15
12/13
  • Monday: Last Class
Week 16
12/15


List of Programs

Assembly

Aduino pde

C

Python

Miscellaneous Information