The syllabus listed weekly includes lecture slides, short video aids, demos, written problems, and reference to book chapters. Please ensure that you go over all the relevant material.
Keys: Code. | Handouts | Video. |
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week1">Week 1 - Introduction, Binary Programming in C, Memory I, II</a>
</h4>
</div>
<div id="week1" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/L00-Intro.pdf">Intro</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/L01-Binary.pdf">Binary (PRE 125)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/L02-memory.pdf">Memory (PRE 130)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/L03-Memory-II.pdf">Memory II (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/Summary.pdf">Summary</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part1/Class.pdf">Class</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0Aint%20main%28%29%20%7B%0A%20%20//%20inception%3F!%3F%0A%20%20int%20x%20%3D%2042%3B%0A%20%20int%20*y%20%3D%20%26x%3B%0A%20%20int%20**z%20%3D%20%26y%3B%0A%20%20int%20***wtf%20%3D%20%26z%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false"> Pointer Chain <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0A//%20adapted%20from%20pg's%20meng%20thesis%0A%0Aint%20globalInt%20%3D%2042%3B%0Achar*%20globalStr%20%3D%20%22hello%5Cnworld%5Ctagain!%5Cn%5Cn%5Cn%22%3B%0Achar%20globalChar%20%3D%20'x'%3B%0Adouble%20globalDouble%20%3D%203.14159%3B%0Aint%20globalIntArray%5B7%5D%3B%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20*a%20%3D%20%26globalInt%3B%0A%20%20char*%20aliasGlobalStr%20%3D%20globalStr%3B%0A%0A%20%20globalIntArray%5B0%5D%20%3D%20100%3B%0A%20%20globalIntArray%5B2%5D%20%3D%20200%3B%0A%20%20globalIntArray%5B4%5D%20%3D%20300%3B%0A%20%20globalIntArray%5B6%5D%20%3D%20400%3B%0A%0A%20%20//%20increment%20it!%0A%20%20aliasGlobalStr%2B%2B%3B%0A%20%20aliasGlobalStr%2B%2B%3B%0A%20%20aliasGlobalStr%2B%2B%3B%0A%20%20aliasGlobalStr%2B%2B%3B%0A%20%20aliasGlobalStr%2B%2B%3B%0A%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false"> Global Pointers <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0A%23include%20%3Cstdlib.h%3E%0A%0A//%20from%20pg's%20meng%20thesis%0Aint%20globalInt%20%3D%2042%3B%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20localArray%5B10%5D%3B%20//%20contents%20uninitialized%0A%20%20int%20*a,%20*b,%20*c,%20i,%20j%3B%20//%20c%20and%20j%20uninitialized,%20*c%20is%20meaningless%0A%20%20a%20%3D%20%26globalInt%3B%0A%20%20b%20%3D%20%28int*%29malloc%2815*sizeof%28int%29%29%3B%0A%20%20//%20Heap%20buffer%20overflow%20after%20i%20%3D%2014%0A%20%20for%20%28i%20%3D%201%3B%20i%20%3C%2015%3B%20i%2B%3D2%29%20%7B%0A%20%20%20%20b%5Bi%5D%20%3D%20i%3B%20//%20Initialize%20only%20odd-indexed%20elements%20of%20b%0A%20%20%7D%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=19&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false"> Pointer and Arrays <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0A//%20From%20the%20test%20suite%20of%20https%3A//github.com/codespecs/daikon%0A//%20%20%20daikon/tests/kvasir-tests/%0A%0A//%20Kvasir%20unit%20test%20for%20nested%20structs%0A%0A//%20TODO%3A%20This%20is%20another%20test%20case%20that%20fails%20on%20AMD64%20due%20to%20the%0A//%20DynComp%20single%20tag%20per%20register%20issue.%20%20If%20%28when%29%20we%20fix%20this,%0A//%20change%20all%20the%20'long's%20below%20back%20to%20'int'.%20%28markro%29%0A%0A%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%0Astruct%20foo%20%7B%0A%20%20long%20age%3B%0A%20%20struct%20bar%20%7B%0A%20%20%20%20long%20a%3B%0A%20%20%20%20long%20b%3B%0A%20%20%7D%20b%3B%0A%20%20char*%20name%3B%0A%7D%3B%0A%0Astruct%20betterFoo%20%7B%0A%0A%20%20long%20betterAge%3B%0A%0A%20%20struct%20betterBar%20%7B%0A%20%20%20%20long%20betterA%3B%0A%20%20%20%20struct%20foo%20crappyFoo%3B%0A%0A%20%20%20%20struct%20bazzz%20%7B%0A%20%20%20%20%20%20char%20hello%5B100%5D%3B%0A%20%20%20%20%20%20char%20world%5B1000%5D%3B%0A%20%20%20%20%7D%20myBazzz%3B%0A%0A%20%20%20%20long%20betterB%3B%0A%20%20%7D%20namedBar%3B%0A%0A%20%20char*%20betterName%3B%0A%7D%3B%0A%0Astruct%20foo%20globalFoo%5B4%5D%3B%0Astruct%20betterFoo%20globalBetterFoo%3B%0A%0Astruct%20foo*%20returnF%28struct%20foo*%20f,%20long*%20blah%29%0A%7B%0A%20%20return%20f%3B%0A%7D%0A%0Aint%20main%28%29%20%7B%0A%20%20struct%20foo%20fooArray%5B20%5D%3B%0A%20%20long%20intArray1%5B100%5D%3B%0A%20%20long*%20onHeap%20%3D%20%28long*%29calloc%2869,%20sizeof%28*onHeap%29%29%3B%0A%0A%20%20globalFoo%5B0%5D.age%20%3D%2013%3B%0A%20%20globalFoo%5B1%5D.age%20%3D%2023%3B%0A%20%20globalFoo%5B2%5D.age%20%3D%2033%3B%0A%20%20globalFoo%5B3%5D.age%20%3D%2043%3B%0A%0A%20%20globalFoo%5B0%5D.b.a%20%3D%200%3B%0A%20%20globalFoo%5B1%5D.b.a%20%3D%201%3B%0A%20%20globalFoo%5B2%5D.b.a%20%3D%202%3B%0A%20%20globalFoo%5B3%5D.b.a%20%3D%203%3B%0A%0A%20%20globalFoo%5B0%5D.b.b%20%3D%200%3B%0A%20%20globalFoo%5B1%5D.b.b%20%3D%20100%3B%0A%20%20globalFoo%5B2%5D.b.b%20%3D%20200%3B%0A%20%20globalFoo%5B3%5D.b.b%20%3D%20300%3B%0A%0A%20%20globalFoo%5B0%5D.name%20%3D%20%22globalFoo%5B0%5D%22%3B%0A%20%20globalFoo%5B1%5D.name%20%3D%20%22globalFoo%5B1%5D%22%3B%0A%20%20globalFoo%5B2%5D.name%20%3D%20%22globalFoo%5B2%5D%22%3B%0A%20%20globalFoo%5B3%5D.name%20%3D%20%22globalFoo%5B3%5D%22%3B%0A%0A%20%20returnF%28fooArray,%20intArray1%29%3B%0A%20%20printf%28%22%26globalFoo%3A%20%25p,%20%26globalBetterFoo%3A%20%25p,%20%26fooArray%3A%20%25p%5Cn%22,%20%26globalFoo,%20%26globalBetterFoo,%20fooArray%29%3B%0A%20%20returnF%28globalFoo,%20onHeap%29%3B%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D&textReferences=false"> Nested Structs <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0A%23include%20%3Cstdio.h%3E%0A%0Avoid%20foo%28int*%20x%29%20%7B%0A%20%20printf%28%22%25d%5Cn%22,%20x%5B3%5D%29%3B%0A%7D%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20arr%5B3%5D%3B%0A%20%20int%20overflow%20%3D%201000%3B%0A%20%20arr%5B0%5D%20%3D%2010%3B%0A%20%20arr%5B1%5D%20%3D%2020%3B%0A%20%20arr%5B2%5D%20%3D%2030%3B%0A%20%20foo%28arr%29%3B%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D&textReferences=false"> Pointer Overflow <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=//%20Example%20C%20code%20for%20OPT%0Aint%20main%28%29%20%7B%0A%20%20unsigned%20int%20int_number%20%20%3D%200xdeadbeef%3B%0A%20%20%0A%20%20char%20ch_number%5B4%5D%3B%0A%20%20ch_number%5B0%5D%3D0xef%3B%0A%20%20ch_number%5B1%5D%3D0xbe%3B%0A%20%20ch_number%5B2%5D%3D0xad%3B%0A%20%20ch_number%5B3%5D%3D0xde%3B%0A%0A%20%20%0A%20%20char*%20ch_ptr%3B%0A%20%20unsigned%20int*%20int_ptr%3B%0A%20%20%0A%20%20//%20Print%20int%20as%20character%20%20%0A%20%20ch_ptr%20%3D%20%28char*%29%26int_number%3B%0A%20%20printf%28%22INT%20USING%20CH%20%5Cn%20%25hhx%22,*%28ch_number%29%29%3B%0A%20%20printf%28%22%25hhx%22,*%28ch_number%2B1%29%29%3B%0A%20%20printf%28%22%25hhx%22,*%28ch_number%2B2%29%29%3B%0A%20%20printf%28%22%25hhx%22,*%28ch_number%2B3%29%29%3B%0A%0A%20%20//%20Print%20char%20as%20int%0A%20%20int_ptr%20%3D%20%26ch_number%3B%0A%20%20printf%28%22%5Cn%20CH%20USING%20INT%20%5Cn%20%25x%22,*%28int_ptr%29%29%3B%0A%20%20%0A%20%20%0A%7D&cumulative=false&curInstr=14&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D&textReferences=false"> CharxInt <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://www.pythontutor.com/visualize.html#code=%23include%20%3Cstdio.h%3E%0A%0A%0A/*%20Normally%20you%20would%20put%20function%20prototypes%20here%3A%0A%0A%20%20void%20show_bytes%28char%20*start,%20int%20len%29%3B%0A%20%20void%20show_int%28int%20x%29%3B%0A%0A%20%20Except%20that%20in%20this%20case%20the%20function%20declarations%0A%20%20come%20before%20their%20first%20calls%20in%20the%20file,%20so%20they%0A%20%20are%20not%20necessary.%0A*/%0A%0A%0A/*%20Takes%20start%20address%20of%20data%20and%20prints%20out%20len%20bytes%20in%20hex.%20%20*/%0Avoid%20show_bytes%28char%20*start,%20int%20len%29%20%7B%0A%20%20int%20i%3B%0A%20%20//%20for%20loop%20doesn't%20need%20curly%20braces%20%7B%7D%20because%20single-line%20body%0A%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20len%3B%20i%2B%2B%29%0A%20%20%20%20//%20printf%20symbols%3A%0A%20%20%20%20//%20%20%25p%20-%20print%20as%20pointer%0A%20%20%20%20//%20%20%5Ct%20-%20tab%20character%0A%20%20%20%20//%20%20%25x%20-%20print%20in%20hex%20%28.2%20means%20pad%20to%202%20digits%29%0A%20%20%20%20//%20%20%5Cn%20-%20newline%20character%0A%20%20%20%20printf%28%22%25p%5Ct0x%25.2x%5Cn%22,%20start%2Bi,%20*%28start%2Bi%29%29%3B%0A%20%20printf%28%22%5Cn%22%29%3B%0A%7D%0A%0A%0A/*%20Uses%20show_bytes%28%29%20to%20print%20hex%20representation%20of%20integer.%0A%20%20%20Use%20of%20sizeof%28%29%20means%20this%20code%20will%20work%20even%20if%20int%20isn't%204B.%20*/%0Avoid%20show_int%28int%20x%29%20%7B%0A%20%20show_bytes%28%28char%20*%29%20%26x,%20sizeof%28int%29%29%3B%0A%7D%0A%0A%0A/*%20Example%20usage%20of%20show_int%28%29.%20*/%0Aint%20main%28%29%20%7B%0A%20%20int%20x%20%3D%2012345%3B%20%20//%2012345%20%3D%200x3039%0A%20%20printf%28%22int%20x%20%3D%20%25d%3B%5Cn%22,%20x%29%3B%0A%20%20show_int%28x%29%3B%0A%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D&textReferences=false"> int2bytes <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part1/int_align.c"> Int Alignment <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://pythontutor.com/visualize.html#code=%23include%20%3Cstdio.h%3E%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20a%5B2%5D%3B%0A%20%20a%5B0%5D%20%3D%200xdeadbeef%3B%0A%20%20a%5B1%5D%20%3D%200x12345678%3B%0A%0A%20%20printf%28%22%25p%20%25x%20%5Cn%22,a,%20*%28a%2B0%29%29%3B%0A%20%20printf%28%22%25p%20%25x%20%5Cn%22,a%2B1,%20*%28a%2B1%29%29%3B%0A%0A%20%20char%20*ch%20%3D%20a%2B1%3B%0A%20%20printf%28%22%25p%20%25x%20%5Cn%22,ch,%20*ch%29%3B%0A%20%20printf%28%22%25p%20%250.2x%20%5Cn%22,ch%2B1,%20*%28ch%2B1%29%29%3B%0A%20%20printf%28%22%25p%20%250.2x%20%5Cn%22,ch%2B2,%20*%28ch%2B2%29%29%3B%0A%20%20printf%28%22%25p%20%250.2x%20%5Cn%22,ch%2B3,%20*%28ch%2B3%29%29%3B%0A%0A%0A%20%20return%200%3B%0A%7D&cumulative=false&curInstr=10&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false"> Byte-Int-Array <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> AOP: Chapter 3 (excluding 3.2.3)
</li>
<li class="list-group-item"> AOP: Chapter 5 and 6 Compiling and Debugging
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week2">Week 2 - Memory III and Number Types</a>
</h4>
</div>
<div id="week2" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/L03-Memory-III.pdf">C Memory Allocation (PRE 130)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/L04-integers.pdf">Integers (PRE 120)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/L05-integers-II.pdf">Integers II (PRE 120)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/Struct_MultiD.pdf">Structs and MultiD Arrays (F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/Q_A.pptx">Self Practice Q/A Memory Bugs (PRE 130)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/Summary.pdf">Summary</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part2/Class.pdf">Class</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="http://www.pythontutor.com/c.html#code=%23include%20%3Cstdio.h%3E%20%0A%23include%20%3Cstdlib.h%3E%20%0A%20%20%0Aint%20main%28%29%20%0A%7B%20%0A%20%20%0A%20%20%20%20//%20This%20pointer%20will%20hold%20the%20%0A%20%20%20%20//%20base%20address%20of%20the%20block%20created%20%0A%20%20%20%20int*%20ptr%3B%20%0A%20%20%20%20int%20n,%20i%3B%20%0A%20%20%0A%20%20%20%20//%20Get%20the%20number%20of%20elements%20for%20the%20array%20%0A%20%20%20%20n%20%3D%205%3B%20%0A%20%20%20%20printf%28%22Enter%20number%20of%20elements%3A%20%25d%5Cn%22,%20n%29%3B%20%0A%20%20%0A%20%20%20%20//%20Dynamically%20allocate%20memory%20using%20calloc%28%29%20%0A%20%20%20%20ptr%20%3D%20%28int*%29calloc%28n,%20sizeof%28int%29%29%3B%20%0A%20%20%0A%20%20%20%20//%20Check%20if%20the%20memory%20has%20been%20successfully%20%0A%20%20%20%20//%20allocated%20by%20malloc%20or%20not%20%0A%20%20%20%20if%20%28ptr%20%3D%3D%20NULL%29%20%7B%20%0A%20%20%20%20%20%20%20%20printf%28%22Memory%20not%20allocated.%5Cn%22%29%3B%20%0A%20%20%20%20%20%20%20%20exit%280%29%3B%20%0A%20%20%20%20%7D%20%0A%20%20%20%20else%20%7B%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Memory%20has%20been%20successfully%20allocated%20%0A%20%20%20%20%20%20%20%20printf%28%22Memory%20successfully%20allocated%20using%20calloc.%5Cn%22%29%3B%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Get%20the%20elements%20of%20the%20array%20%0A%20%20%20%20%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20n%3B%20%2B%2Bi%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20ptr%5Bi%5D%20%3D%20i%20%2B%201%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Print%20the%20elements%20of%20the%20array%20%0A%20%20%20%20%20%20%20%20printf%28%22The%20elements%20of%20the%20array%20are%3A%20%22%29%3B%20%0A%20%20%20%20%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20n%3B%20%2B%2Bi%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20printf%28%22%25d,%20%22,%20ptr%5Bi%5D%29%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Get%20the%20new%20size%20for%20the%20array%20%0A%20%20%20%20%20%20%20%20n%20%3D%2010%3B%20%0A%20%20%20%20%20%20%20%20printf%28%22%5Cn%5CnEnter%20the%20new%20size%20of%20the%20array%3A%20%25d%5Cn%22,%20n%29%3B%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Dynamically%20re-allocate%20memory%20using%20realloc%28%29%20%0A%20%20%20%20%20%20%20%20ptr%20%3D%20realloc%28ptr,%20n%20*%20sizeof%28int%29%29%3B%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Memory%20has%20been%20successfully%20allocated%20%0A%20%20%20%20%20%20%20%20printf%28%22Memory%20successfully%20re-allocated%20using%20realloc.%5Cn%22%29%3B%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Get%20the%20new%20elements%20of%20the%20array%20%0A%20%20%20%20%20%20%20%20for%20%28i%20%3D%205%3B%20i%20%3C%20n%3B%20%2B%2Bi%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20ptr%5Bi%5D%20%3D%20i%20%2B%201%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20%0A%20%20%20%20%20%20%20%20//%20Print%20the%20elements%20of%20the%20array%20%0A%20%20%20%20%20%20%20%20printf%28%22The%20elements%20of%20the%20array%20are%3A%20%22%29%3B%20%0A%20%20%20%20%20%20%20%20for%20%28i%20%3D%200%3B%20i%20%3C%20n%3B%20%2B%2Bi%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20printf%28%22%25d,%20%22,%20ptr%5Bi%5D%29%3B%20%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20%0A%20%20%20%20%20%20%20%20free%28ptr%29%3B%20%0A%20%20%20%20%7D%20%0A%20%20%0A%20%20%20%20return%200%3B%20%0A%7D%20&curInstr=0&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D"> Malloc/Free <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/stack_vs_heap.c"> Stack vs Heap <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/print_binary.c"> Print binary <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/shift.c"> Shift <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/shift2.c"> Shift2 <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/bitop.c"> Bit manipulation <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part2/ptr_diff.c"> Pointer Diff <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://pythontutor.com/c.html#code=%23include%20%3Cstdio.h%3E%0Aint%20main%28%29%20%7B%0A%20%20int%20abc%5B4%5D%5B4%5D%20%3D%20%7B%0A%20%20%20%20%20%20%7B0,%201,%202,%203%7D,%0A%20%20%20%20%20%20%7B4,%205,%206,%207%7D,%0A%20%20%20%20%20%20%7B8,%209,%2010,%2011%7D,%0A%20%20%20%20%20%20%7B12,%2013,%2014,%2015%7D,%0A%20%20%7D%3B%0A%20%20int%20*base%20%3D%20%26abc%3B%0A%20%20int%20*current%20%3D%20NULL%3B%0A%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%3D%2015%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20/*%20The%20correct%20way%20of%20displaying%20an%20address%20would%20be%0A%20%20%20%20%20*%20printf%28%22%25p%20%22,abc%5Bi%5D%29%3B%20but%20for%20the%20demonstration%0A%20%20%20%20%20*%20purpose%20I%20am%20displaying%20the%20address%20in%20int%20so%20that%0A%20%20%20%20%20*%20you%20can%20relate%20the%20output%20with%20the%20diagram%20above%20that%0A%20%20%20%20%20*%20shows%20how%20many%20bytes%20an%20int%20element%20uses%20and%20how%20they%0A%20%20%20%20%20*%20are%20stored%20in%20contiguous%20memory%20locations.%0A%20%20%20%20%20*%0A%20%20%20%20%20*/%0A%20%20%20%20current%20%3D%20base%20%2B%20i%3B%0A%20%20%20%20printf%28%22%5Cn%20abc%5B%25d%5D,%20pointer%3A%20%25p,%20%25d%20%22,%20i,%20current,%20*current%29%3B%0A%20%20%7D%0A%0A%20%20long%20int%20cur%20%3D%20%28long%20int%29%28%26abc%29%3B%0A%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%3D%2015%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20/*%20Here%20we%20cast%20the%20address%20to%20an%20int.%0A%20%20%20%20%20*%20Manipulate%20it%20and%20then%20reinterpret%20as%20a%20pointer.%0A%20%20%20%20%20*/%0A%20%20%20%20cur%20%3D%20%28long%20int%29base%20%2B%20i%20*%204%3B%0A%20%20%20%20printf%28%22%5Cn%20abc%5B%25d%5D,%20ptr_int%3A%200x%25x,%20%25d%20%22,%20i,%20cur,%20*%28int%20*%29cur%29%3B%0A%20%20%7D%0A%20%20return%200%3B%0A%7D&curInstr=87&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D"> 2D as 1D <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://pythontutor.com/c.html#code=%23include%20%3Cstddef.h%3E%0A%23include%20%3Cstdio.h%3E%0Astruct%20Person%20%7B%0A%20%20char%20*name%3B%0A%20%20int%20age%3B%0A%7D%3B%0Atypedef%20struct%20Person%20person%3B%0A%0A%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%0A%23include%20%3Cstring.h%3E%0A%0Aint%20main%28%29%20%7B%0A%20%20int%20i%3B%0A%20%20char%20**names%3B%0A%20%20int%20*age%3B%0A%20%20person%20record%5B2%5D%20%3D%20%7B%7B%22Arrvindh%22,%2036%7D,%20%7B%22Student%201%22,%2018%7D%7D%3B%0A%0A%20%20names%20%3D%20malloc%28sizeof%28char%20*%29%20*%202%29%3B%0A%20%20age%20%3D%20malloc%28sizeof%28int%29%20*%202%29%3B%0A%0A%20%20printf%28%22sizeof%20name%20is%20%25d%5Cn%22,%20sizeof%28names%29%29%3B%0A%20%20printf%28%22sizeof%20age%20is%20%25d%20%5Cn%22,%20sizeof%28age%29%29%3B%0A%0A%20%20long%20int%20base%20%3D%20%28long%20int%29record%3B%0A%0A%20%20for%20%28i%20%3D%200%3B%20i%20%3C%202%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20long%20current%20%3D%20base%20%2B%20i%20*%20sizeof%28person%29%3B%0A%20%20%20%20names%5Bi%5D%20%3D%20*%28char%20**%29%28current%20%2B%200%29%3B%0A%20%20%20%20age%5Bi%5D%20%3D%20*%28int%20*%29%28current%20%2B%20offsetof%28person,%20age%29%29%3B%0A%20%20%7D%0A%20%20for%20%28i%20%3D%200%3B%20i%20%3C%202%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20printf%28%22Name%20%25s,%20Age,%20%25d%20%5Cn%22,%20names%5Bi%5D,%20age%5Bi%5D%29%3B%0A%20%20%7D%0A%0A%20%20return%200%3B%0A%7D&curInstr=0&mode=display&origin=opt-frontend.js&py=c&rawInputLstJSON=%5B%5D"> Array-of-Structs to Multiple Arrays <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="http://pythontutor.com/visualize.html#code=%23include%20%3Cstdio.h%3E%0A%23include%20%3Cstdlib.h%3E%20%0Aint%20main%28%29%20%7B%0A%20%20%20int%20row%20%3D%202,%20col%20%3D%202%3B%0A%20%20%20int%20**array_of_rows%20%3D%20%28int%20**%29malloc%28row%20*%20sizeof%28int*%29%29%3B%20%0A%20%20%20//%20This%20allocates%20a%20row%20number%20of%20int*%0A%20%20%20//%20array_of_rows%20points%20to%20the%20starting%20addres%20of%20an%20array%20of%20int*%0A%20%20%20//%20array_of_rows%5B0%5D%20is%20a%20pointer%20to%20table%5B0%5D%5B0%5D%0A%20%20%20//%20array_of_cols%20is%20a%20pointer%20to%20table%5B0%5D%5B1%5D%0A%20%20%20%0A%20%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%20row%3B%20i%2B%2B%29%0A%20%20%20%20%20%20%20%20array_of_rows%5Bi%5D%20%3D%20%28int*%29malloc%28col*sizeof%28int%29%29%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%20row%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20for%20%28int%20j%20%3D%200%3B%20j%20%3C%20col%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Go%20to%20row%0A%20%20%20%20%20%20%20%20int%20*ptr_to_row%20%3D%20array_of_rows%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20//%20Go%20to%20jth%20column%0A%20%20%20%20%20%20%20%20ptr_to_row%5Bj%5D%20%3D%20i*row%2Bj%3B%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%0A%20%20%20printf%28%22The%20matrix%20elements%20are%3A%5Cn%22%29%3B%0A%20%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%20row%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20for%20%28int%20j%20%3D%200%3B%20j%20%3C%20col%3B%20j%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20//%20Go%20to%20row%0A%20%20%20%20%20%20%20%20int%20*ptr_to_row%20%3D%20array_of_rows%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20printf%28%22%25d%20%22,%20ptr_to_row%5Bj%5D%29%3B%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20printf%28%22%5Cn%22%29%3B%0A%20%20%20%7D%0A%20%0A%20//%20Free%20row-by-row.%20Each%20free%20in%20loop,%20frees%20all%20columns%20allocated%20in%20line%2012.%0A%20%20%20for%20%28int%20i%20%3D%200%3B%20i%20%3C%20row%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20free%28array_of_rows%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A//%20Free%20array_of_rows%20%20%20%20%0A%20%20%20%20free%28array_of_rows%29%3B%0A%20%20%20%0A%20%20%20return%200%3B%0A%7D&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=c_gcc9.3.0&rawInputLstJSON=%5B%5D&textReferences=false"> Array of Arrays - Pointer to Pointer <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> AOP: Chapter 12
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week3">Week 3 - RISC V Intro</a>
</h4>
</div>
<div id="week3" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part3/L06-RISCV.pptx">RISC V Overview</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//"></a>
<a href="https://www.youtube.com/watch?v=flUZK1yaYeM"><span class="glyphicon glyphicon-film"></span></a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part5/Bonus.pptx">RISC V Bonus</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part3/Summary.pptx">Summary</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part3/Class.pdf">Class (F2F)</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="assets/notebooks/RISCV/RISCV_CARD.pdf"> RISCV ISA <span class="glyphicon glyphicon-list-alt"></span></a>
</li>
<li class="list-group-item">
<a href="https://godbolt.org/z/6ErPq7"> Sum of Array (SoA)- Godbolt <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/sumofarray.s"> Run SoA <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://godbolt.org/z/Kvz3fc"> Fibonacci - Godbolt <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/fib.s"> Run Fib <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/loop.c"> Loops (C) <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/loop.s"> Loops (Run) <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/arith_calc.c"> Command line arithmetic (C) <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/arith_calc.s"> Command line arithmetic (Run) <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/jump_table.s"> Jump table <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> ARCH 2.5, 2.10
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week4">Week 4 - RISC V Call</a>
</h4>
</div>
<div id="week4" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part4/L07-RISCV.pptx">Instruction list (F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part4/L08-RISCV.pptx">RISCV Calling (F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//"></a>
<a href="https://www.youtube.com/watch?v=OGBPXYmOpWE"><span class="glyphicon glyphicon-film"></span></a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part4/Summary.pptx">Summary</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part4/Class.pdf">Class</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/notebooks/RISCV/RISCV_CALL.pdf"> RISC-V Call <span class="glyphicon glyphicon-list-alt"></span></a>
</li>
<li class="list-group-item">
<a href="https://godbolt.org/z/YaP4fT"> Loops in RISC V (+F2F) <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://app.lucidchart.com/documents/view/c3e59212-a06f-402a-a193-bc4fadb7e280/0_0"> Control flow graph for loops in RISC V <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://godbolt.org/z/wwcVry"> Factorial in RISC V <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://godbolt.org/z/ubCqBL"> Malloc and assign <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://godbolt.org/z/GE6d5veT5"> Vtables and Classes in Assembly <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/jump_table.s"> JTable <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Venus/index.html?override=true&save=true&target=https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part4/smc2.s"> Self modifying (Immediate Example) <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> Readings: ARCH 2.12
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week5">Week 5 - RISC V Finale</a>
</h4>
</div>
<div id="week5" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part5/L09-Arrays.pptx">Arrays</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part5/L10-Assembler-Linker.pptx">Compiling and Assembling (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part5/Bonus.pptx">Bonus (Self learn)</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="assets/books/rvbook.pdf"> RV <span class="glyphicon glyphicon-list-alt"></span></a>
</li>
<li class="list-group-item">
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part3/jump_table.s"> Jump table <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part5/Arrays.html"> Arrays <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> RV: 3.1-3.3. AOP: 5
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week6">Week 6 - Floating Point</a>
</h4>
</div>
<div id="week6" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part6/L12-fp.pptx">Floating Point I (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part6/L13-fp-II.pptx">Floating Point II</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part6/Summary.pptx">Summary</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://www.h-schmidt.net/FloatConverter/IEEE754.html"> IEEE 754 Simulator <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://repl.it/join/gjlzttbz-ashriram"> Sorting FP as Fixed <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> AOP: 3.2.3, ARCH: 3.5, 3.9
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#">Midterm Week</a>
</h4>
</div>
<div id="" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week7">Week 7 - Caches and Memory</a>
</h4>
</div>
<div id="week7" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/L14-Caches-I.pptx">Caches I</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/L15-Caches-II.pptx">Caches II</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/L16-Caches-III.pptx">Caches III</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/L17-Hierarchy-IV.pptx">Memory Hierarchy (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/L17-Cache-Questions.pptx">Sample Cache questions (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part7/Class.pdf">Class Slides</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="assets/demos/Part7/flowchart.pdf"> Cache Flowchart <span class="glyphicon glyphicon-list-alt"></span></a>
<a href="assets/lectures/Part7/q7.pdf"> Extra questions <span class="glyphicon glyphicon-list-alt"></span></a>
</li>
<li class="list-group-item">
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/distrib/Cache"> Cache simulator <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> ARCH: 5.1, 5.2, 5.3, 5.4, 5.8, 5.13, 5.15, 5.16.
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week8">Week 8 - Virtual Memory</a>
</h4>
</div>
<div id="week8" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part8/L18-Processes.pptx">Processes</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part8/L19-20-VM.pptx">VM I-II</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part8/L21-VM-III.pptx">VM-III (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part8/Class.pdf">Class Slides</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="assets/notebooks/CSPP_8.pdf"> CSPP Chapter 8 <span class="glyphicon glyphicon-list-alt"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> CSPP 8.0-8.4, CSPP: 9.0-9.7.
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week9">Week 9 - Vector and Data Parallelism</a>
</h4>
</div>
<div id="week9" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part9/vector.pdf">Vectors (No videos)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part9/Class.pdf">Class Slides (only slides covered in class will be tested)</a>
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week10">Week 10 - Digital Logic</a>
</h4>
</div>
<div id="week10" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/L25-Comb.pptx">Digital Logic (Combinatorial)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/L26-Seq.pptx">Digial Logic (Sequential)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/L27-Datapath.pptx">Single Cycle Datapath (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/Summary-SDS.pptx">Summary Digital System</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/Summary-1Cycle.pptx">Summary RISC-V Datapath</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part10/Class.pdf">Class Slides</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> ARCH:A.3-A.6. ARCH:4.1-4.2
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week11">Week 11 - RISC-V Processor and Pipeline</a>
</h4>
</div>
<div id="week11" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/L28-Control.pptx">Pipeline Control</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/L29-Hazard.pptx">Hazards (+F2F)</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/Summary-Ctrl-Pipeline.pptx">Summary Control and Pipeline</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/Summary-Hazards.pptx">Summary Hazards</a>
</li>
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/Class-AA.pdf">Class Slides</a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Additional Notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://webriscv.dii.unisi.it/"> Web-based Pipeline Model <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part11/structure.s"> Structure Hazard <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part11/data.s"> Data Hazard <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part11/load.s"> Load Hazard <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part11/Branch.s"> Branch Hazard <span class="glyphicon glyphicon-play-circle"></span></a>
<a href="https://www2.cs.sfu.ca/~ashriram/Courses/CS295/assets/demos/Part11/Ecall.s"> Ecall Stall <span class="glyphicon glyphicon-play-circle"></span></a>
</li>
</ul>
<div class="panel-heading">
<h3 class="panel-title">Book Chapters</h3>
</div>
<ul class="list-group">
<li class="list-group-item"> ARCH:4.3-4.4
</li>
</ul>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#week12">Week 12 - Review</a>
</h4>
</div>
<div id="week12" class="panel-collapse collapse">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Lecture notes</h3>
</div>
<ul class="list-group">
<li class="list-group-item">
<a href="https://cmpt-295-sfu.github.io/website//assets/lectures/Part11/Review.pdf">Review Classroom Slides</a>
</li>
</ul>
</div>
</div>
</div>
</div>
Venus Online RISC V Simulator **Thanks To Stephan Kaminsky