Difference between revisions of "CSC231 Schedule Spring 2017"

From dftwiki3
Jump to: navigation, search
(Created page with "--D. Thiebaut (talk) 10:37, 2 December 2016 (EST) ---- __NOTOC__ <br /> <center> Home | [[CSC231 Syllabus -- Spri...")
 
 
(246 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
<br />
 
<br />
 
<center>[[CSC_231_--_2017 | Home]] | [[CSC231 Syllabus -- Spring 2017 | Syllabus]] | [[CSC231 Schedule 2017 | Schedule]] |
 
<center>[[CSC_231_--_2017 | Home]] | [[CSC231 Syllabus -- Spring 2017 | Syllabus]] | [[CSC231 Schedule 2017 | Schedule]] |
[[CSC231_Schedule#Links_and_Resources | Links &amp; Resources]]</center><br />
+
[[CSC231_Schedule_2017#Links_and_Resources | Links &amp; Resources]]</center><br />
 
<br />
 
<br />
 
+
[[CSC231_Schedule_Fall_2017 | You probably want to be on the CSC231, '''Fall 2017''' page...]]
 +
<onlydft>
 
<br />
 
<br />
 
====&nbsp;====
 
====&nbsp;====
Line 19: Line 20:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions,  First Lab.
+
|width="60%"| '''Topics''': Introduction
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Friday'''
 
::*  
 
::*  
 +
::* Syllabus
 +
::* Class accounts
 +
::* The main players for this semester:
 +
:::* PC
 +
:::* Processor
 +
:::* Memory
 +
:::* Disk
 +
::* [[CSC231_FirstProg.asm | First program in assembly]]: recognizing the different elements of a program
 +
:::* Structure
 +
:::* Presentation
 +
:::* Documentation
 +
::* [[CSC231 skeleton program | Skeleton program]]
 +
::* [[CSC231 HelloWorld.asm | '''Hello World!''' ]] on Linux (and its Mac [[CSC231 Hello World on Mac | version]])
 +
::* Linux command line, Bash shell.  Some essential commands.  Emacs editor.
 +
 
|
 
|
*  
+
<!--* [[CSC231_Lab_1 2017| Lab #1]] -->
 +
<!-- *  [[Emacs_%26_Shell_Tutorial| Emacs Lab]] -->
 +
<!-- *  [[CSC231 Homework 1 2017| Homework 1]]-->
 
|
 
|
*  
+
* Reading
 +
** Chapter 1 in the [http://cs.smith.edu/~dthiebaut/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/~dthiebaut/classes/231_0405/doc/pcasm-book.pdf PC Assembly Language].  Note, Carter uses 1A92h to represent a hexadecimal number.  I prefer 0x1A92.
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 2'''  Jan 31, Feb 2
+
|width="45%"|'''Week 2'''  Jan 30, Feb 1, 3
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 41: Line 63:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': Emacs, assembly, hexdump
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* A few words about "When Computers were Human," a video by David Alan Grier, editor of IEEE Annals of History of Computing.  (In reference to the movie "Hidden Figures.")
 +
<br />
 +
<videoflash>YwqltwvPnkw</videoflash>
 +
<br />
 +
::* [[Emacs_%26_Shell_Tutorial| Emacs Lab]]
 +
::* The assembly process
 +
::* Declaring strings, and their location in memory
 +
::*  [[CSC231_Lab_1 2017 | Lab #1]]  on printing strings and [[CSC231_Lab_1_Solutions 2017| solution programs]]
 +
::* [[CSC231_Listing_%26_Hexdump_Files_for_helloWorld2.asm| Using hexdump]] and looking at the contents of binary files.
 +
::* [[Media:CS231_week1.pdf| slides (pdf)]]
 +
 
 +
* '''Friday''':
 +
::* [[CSC231 Bash Tutorial 1|  BASH LAB: Basic Navigation Commands and Subdirectories]]
 +
 
 
|
 
|
 
*  
 
*  
Line 56: Line 91:
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 3'''  Feb 7, 9
+
|width="45%"|'''Week 3'''  Feb 6, 8, 10
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 65: Line 101:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean FunctionsFirst Lab.
+
|width="60%"| '''Topics''': Registers (eax, ax, al). The ADD Instruction
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Back to hexdump and listings
 +
::* The '''mov''' instruction
 +
::* General purpose registers: al, ah, ax, eax...
 +
::* moving information in an out of registers and memory
 +
::* the '''add''' instruction
 +
::* [[Media:CS231_week3.pdf| slides (pdf)]]
 +
* '''Friday''':
 +
::*  [[CSC231_Bash_Tutorial_2|'''Linux Lab''']]: More about files and directories.  pushd, popd, history, less, cat, file, grep 
 +
::*  '''Moodle quiz''' on lab
 +
 
 
|
 
|
*  
+
* '''Homework #1''' will be released on Monday 2/6 at 11:00 a.m.  You will find it on Moodle and you will have until 2/13/17 11:55 p.m. to submit it. [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* Read [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH04/CH04-3.html#HEADING3-79 Chapter 4 Section 3] on the '''Mov''' Instruction.
 +
* Read [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH04/CH04-1.html#HEADING1-8 Section 4.1.5] on the General Purpose registers.
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 4'''  Feb 14, 16
+
|width="45%"|'''Week 4'''  Feb 13, 15, 17
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 89: Line 136:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': SUB, DW, DD, DB, Binary, Hex, Decimal conversion.
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* A few words about the programming part of Homework #2
 +
::* The '''SUB''' instruction (subtracts ''source'' from ''dest'')
 +
::* Review db, dw, dd, and how variables fit in memory
 +
::* Step-by-step execution of a program
 +
::* Getting a sense of speed of computation
 +
:::* Comparing to Arduino
 +
:::* Comparing to Raspberry Pi 3
 +
::* Number systems.  Understanding ''decimal'', ''binary'', and ''hexadecimal''
 +
:::* Counting
 +
:::* Arithmetic
 +
:::* Conversion
 +
:::* A [[Decimal 2 Binary Conversion in Python|Python program explaining decimal to binary conversion]]
 +
::* [[CSC231_Review_of_hexadecimal_number_system| Exercises]]
 +
::* [[Media:CS231_week4.pdf | Slides (pdf)]]
 +
* '''Friday''':
 +
::*  [[CSC231 Bash Tutorial 3| Linux Lab]]: ''Manual'' Pages,  and ''pipes.''
 +
::* '''Moodle quiz''' on lab
 +
 
 
|
 
|
*  
+
* [[CSC231_Homework_2_2017| '''Homework #2''']] is released on Monday 2/13 at 11:00 a.m. It contains a programming assignment, and a quiz to be answered on '''Moodle'''.  The due date is Monday 2/20/17 11:55 p.m.
 +
*  [[CSC231 Homework Solutions 2017| Solution program(s)]]
 
|
 
|
*  
+
* Read [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH01/CH01-1.html#HEADING1-30  Chapter 1] in the Art of Assembly reference by Randy Hyde, Sections '''1.0''' to '''1.4'''.
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 5'''  Feb 21
+
|width="45%"|'''Week 5'''  Feb 20
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 113: Line 179:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': Conversion binary, hex, decimal.
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday'''
+
* '''Mon/Wed"
* '''Thursday: Rally Day'''
+
::* A few more words about pipes: [[Python and Java program that work as pipes| Python and Java pipes]]
::*  
+
::* [[Decimal_2_Binary_Conversion_in_Python| Converting decimal numbers into binary with Python]]
 +
::* Conversion from one base to another, binary, 10, hex.
 +
::* More arithmetic instructions: INC, DEC, MUL, DIV
 +
::* Logical instructions: AND, OR, XOR, NOT
 +
::* Representing negative numbers
 +
::* [[Media:CSC231_slides_Week5.pdf | Slides (pdf)]]
 +
* '''Friday''':
 +
::* [[CSC231 Bash Tutorial 4| Linux Lab]]: Vi text editor,  Redirection of stdin, and stdout
 
|
 
|
*  
+
* '''Homework #3''' is released on Monday 2/20 at 11:00 a.m. It contains several quizzes to be answered on Moodle.. The due date is Monday 2/27/17 11:55 p.m.
 +
*  [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* Section 6.5.1.2 in [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-2.html#HEADING2-117 Hall's Art of Assembly]
 +
* Sections 1.5 an 1.6 in [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-49 Hall's Art of Assembly]
 +
* Section 6.5.6 and 6.5.7 on MUL and DIV in [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-2.html#HEADING2-337 Hall's text].  Skip the parts about IMUL, and IDIV which  require knowledge of signed numbers.  Also skip the part about the decimal adjust and other instructions in these sections.
 +
* For next week, prepare by reading [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Section 1.7]
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
Line 138: Line 216:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': Logical instructions, Logic Design, Signed Numbers
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Logical instructions
 +
::* Logic design: A 2-bit adder (this won't be on the midterm exam)
 +
::* Signed numbers
 +
:::* Signed magnitude
 +
:::* 1's Complement
 +
:::* 2's Complement
 +
::* [[Media:CSC231_Week6_slides.pdf| slides]] (pdf)
 +
* '''Friday''':
 +
::*  [[CSC231_Bash_Tutorial_5|Linux Lab]]: Nasm as a tool, more advanced redirections, for-loops
 +
 
 
|
 
|
*  
+
* [[CSC231 Homework 4 2017 |''' Homework 4''']], due March 6 at 11:55 p.m.
 +
*  [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* Read [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-49 Section 1.5] on Logical Operations on Bits
 +
* Read [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH01/CH01-2.html#HEADING2-96 Sections 1.7 and 1.8] on signed numbers.
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
Line 162: Line 252:
 
|}
 
|}
 
<br />
 
<br />
{| class="mw-collapsible " style="width:100%" border="1"
+
{| class="mw-collapsible" style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions,  First Lab.
+
|width="60%"| '''Topics''': 2's Complement, Midterm
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon'''
 +
::* [[CSC231_Sample_Midterm_Questions| Sample midterm questions from previous years]]
 +
::* Exercises on 2's Complement Numbers
 +
::* LOOP instruction
 +
::* [[Media:CSC231_Week7_2017.pdf | slides]] (pdf)
 +
* '''Wed''': <font color="magenta">'''MIDTERM EXAM'''</font>: on paper, in class, closed books, closed notes, closed computers. - ([[Media:CSC231Midterm2017Solutions.pdf|solutions]])
 
::*  
 
::*  
 +
* '''Friday''':
 +
::* No class
 
|
 
|
*  
+
* No homework assignment given out this week
 
|
 
|
 
*  
 
*  
Line 186: Line 283:
 
<!-- ============================================================= -->
 
<!-- ============================================================= -->
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 8'''  Mar 21, 23
+
|width="45%"|'''Week 8'''  Mar 20, 22, 24
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 197: Line 295:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''':  Loops and Addressing Modes
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* The Loop instruction
 +
::* Indirect Addressing Modes
 +
::* Working with arrays
 +
::* [[Media:CSC231_Week8_2017.pdf | slides]] (pdf)
 +
::* '''Miderm exams''' will be returned.  The grading was done as follows: 11 problems worth 10 points each were graded and generated a number between 0 and 110, which was translated into a letter grade.  This letter grade was then transformed into another number using Moodle's number-letter translation table.  This number is the one entered in Moodle.  ([[Media:CSC231Midterm2017Solutions.pdf|Solutions to Midterm Problems]])
 +
* '''Friday''':
 +
::*  [[CSC231 Bash Tutorial 6| Linux Lab: Bash scripting]]
 +
 
 
|
 
|
*  
+
* No homework this week
 
|
 
|
*  
+
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-294 The Loop Instruction (Section 6.9.6)]
 +
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH04/CH04-2.html#HEADING2-35 The Register Indirect addressing mode (Section 4.6.2.2)]
 +
*  [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH04/CH04-2.html#HEADING2-35 Other Addressing modes (up to Section 4.6.2.5)]
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 9'''  Mar 28, 30
+
|width="45%"|'''Week 9'''  Mar 27, 29, 31
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 221: Line 329:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': Loops, arrays, game of life, conditional jumps
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Working with arrays: [https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life Exploring Conway's Game of Life] (see video links in the slides)
 +
::* Jumps
 +
::* Flags register
 +
::* Conditional Jumps
 +
::* [[Media:CSC231_Week9_2017.pdf | slides (pdf)]]
 +
::* [[CSC231 Developing the Game of Life in Assembly| Game of Life programs developed in class]]
 +
* '''Friday''':
 +
::*  [[CSC231_Bash_Tutorial_7 | Linux Lab: If Statements]]
 
|
 
|
*  
+
* [[CSC231 Homework 5 2017| Homework 5]] (due 4/3/2017)
 +
*  [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-3 Unconditional Jump]
 +
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-1.html#HEADING1-27 The Flags Register]
 +
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-226 Conditional Jumps]
 +
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-2.html#HEADING2-244 CMP instruction]
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 10'''  Apr 4, 6
+
|width="45%"|'''Week 10'''  Apr 3, 5, 7
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 245: Line 365:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''':  Conditional Jumps
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Finish [[CSC231_Bash_Tutorial_7| the Linux Lab on if-statements]].
 +
::* Conditional Tests
 +
::* [[CSC231_DDD_Short_Tutorial|A quick introduction to the '''ddd''' debugger]]
 +
::* [[Media:CSC231_Week10_2017.pdf | slides (pdf)]]
 +
* '''Friday''':
 +
::*  [[Media:CSC231_IntroToC_2017.pdf|Linux Lab: Introduction to C]]
 
|
 
|
*  
+
* [[CSC231 Homework 6 2017 | Homework 6]] (due 4/10/17 at 11:55 p.m.)
 +
*  [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH06/CH06-5.html#HEADING5-226 Conditional Jump instructions]
 +
 
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 11'''  Apr 11, 13
+
|width="45%"|'''Week 11'''  Apr 10, 12, 14
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 269: Line 397:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''': Function, Stack, Push, Pop
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Functions, The STACK, ESP, EBP, Push, Pop
 +
::*  [[Media:CSC231_Week11_2017.pdf | slides (pdf)]]
 +
* '''Friday''':
 +
::*  [[Media:CSC231_IntroToC_2017.pdf|Linux Lab: Introduction to C, Part 2]]
 
|
 
|
*  
+
* [[CSC231 Homework 7 2017 | Homework 7 (due 4/17/17)]]
 +
*  [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH11/CH11-1.html#HEADING1-0 Functions].  Functions are also called ''procedures'' when dealing with assembly.  You'll find this term used in Randy Hyde's documentation.  Also, Hydes uses the '''proc''' and '''endp''' directives to define functions, which is fine.  We won't in this class.  Functions work just as well without!
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 12'''  Apr 18, 20
+
|width="45%"|'''Week 12'''  Apr 17, 19, 21
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 293: Line 426:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions,  First Lab.
+
|width="60%"| '''Topics''': Recursion, fact
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Passing by reference
 +
::* Local variables
 +
::* Recursion
 +
::* Example1:  [[CSC231 Factorial.asm| Computing factorials]]
 +
::* [[Media:CSC231_Week12_2017.pdf| slides (pdf)]]
 +
* '''Friday''':
 +
::* [[Media:CSC231_IntroToC_2017.pdf|Linux Lab: Introduction to C, Part 3]]
 
|
 
|
*  
+
* [[CSC231 Homework 8 2017| Homework #8]] (due 4/24/17)
 +
* [[CSC231 Homework Solutions 2017| Solution program]]
 
|
 
|
*  
+
* [http://cs.smith.edu/~dthiebaut/ArtOfAssembly/CH11/CH11-7.html#HEADING7-86 Recursion chapter] in Randy Hall's Art of Assembly.  Hall uses 16-bit registers (ax, bx, bp, etc...) but the reasoning is the same as for 32-bit registers.
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 13'''  Apr 25, 27
+
|width="45%"|'''Week 13'''  Apr 24, 26, 28
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 317: Line 458:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''':   
 
|width="15%"| '''Lab/Hw'''
 
|width="15%"| '''Lab/Hw'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon/Wed'''
::*  
+
::* Recursion Example 2:  [[CSC231_Towers_of_Hanoi | Towers of Hanoi ]]
 +
::* [[Stack overflow in Java| Stack overflow in Java; an example]]
 +
::* Floating Point Numbers
 +
::* [[GenerateNaN.java| Generating NaNs in Java]]
 +
::* [[Media:CSC231_Week13_2017.pdf| slides (pdf)]]
 +
* '''Friday''':
 +
::* [[Media:CSC231_IntroToC_2017.pdf|Linux Lab: Introduction to C, Part 4]]
 
|
 
|
*  
+
* [[CSC231 Optional Homework 9 2017 | Homework 9 (Optional)]]
 +
<!-- [[CSC231 Homework Solutions 2017| Solution program]] -->
 
|
 
|
*  
+
* [[CSC231_An_Introduction_to_Fixed-_and_Floating-Point_Numbers| Introduction to Floating-Point Numbers]]
 
|}
 
|}
 
<br />
 
<br />
 +
 
====&nbsp;====
 
====&nbsp;====
 
----
 
----
 
{| style="width:100%" border="0"
 
{| style="width:100%" border="0"
|width="45%"|'''Week 14'''  May 2, 4
+
|width="45%"|'''Week 14'''  May 1, 3
 
|width="20%"| '''&nbsp;'''  
 
|width="20%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
 
|width="25%"| '''&nbsp;'''  
Line 341: Line 490:
 
{| class="mw-collapsible " style="width:100%" border="1"
 
{| class="mw-collapsible " style="width:100%" border="1"
 
|- style="background:#dddddd;"
 
|- style="background:#dddddd;"
|width="60%"| '''Topics''': Introduction, Boolean Functions, First Lab.
+
|width="60%"| '''Topics''':  Floating-Point Numbers
|width="15%"| '''Lab/Hw'''
+
|width="15%"| '''Exam'''
 
|width="25%"| '''Reading'''  
 
|width="25%"| '''Reading'''  
 
|-valign="top"
 
|-valign="top"
 
|
 
|
* '''Tuesday/Thursday'''
+
* '''Mon'''
::*  
+
::* Floating Point Numbers
 +
::* Recap
 +
::* [[Media:CSC231_Week14_2017.pdf| slides (pdf)]]
 +
* '''Wednesday''':
 +
::* [[Media:CSC231_Week14_2017.pdf| slides (pdf)]]
 +
::* [[CSC231 Final Exam 2017| '''Final exam''']].  Take home, open books, open Web, open computers.  Due last day of exams.
 
|
 
|
*  
+
* [[CSC231 Final Exam 2017| '''Final exam''']]
 
|
 
|
*  
+
* [[CSC231_An_Introduction_to_Fixed-_and_Floating-Point_Numbers| Introduction to Floating-Point Numbers]]
 +
 
 
|}
 
|}
 +
<br />
 +
 +
=Links and Resources=
 +
<br />
 +
==Pipelines, Branch Prediction, Hyper-Threading==
 +
<br />
 +
* [http://www.lighterra.com/papers/modernmicroprocessors/ The 90-minute guide to Modern Microprocessors], a high-level coverage of pipelines, branch prediction, instruction parallelism, and hyper-threading.
 +
<br />
 +
==Bash Shell &amp; Linux Resources==
 +
<br />
 +
* [http://ryanstutorials.net/linuxtutorial/ Ryan's Linux Tutorials]
 +
* [http://www.ee.surrey.ac.uk/Teaching/Unix/ Tutorial from the University of Surrey, UK]
 +
<br />
 +
<br />
 +
</onlydft>
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
<br />
 +
[[Category:CSC231]][[Category:Classes]]

Latest revision as of 19:02, 21 September 2017