Changes

Jump to: navigation, search

Fall 2015 SPO600 Weekly Schedule

5,467 bytes added, 16:19, 26 December 2015
no edit summary
{{Admon/important|It's Alive!|This [[SPO600]] weekly schedule will be updated as the course proceeds - dates and content are subject to change. The cells in the summary table will be linked to relevant resources and labs as the course progresses.}}
For the * Previous semester: [[Winter 2015 version of the weekly schedule, see SPO600 Weekly Schedule]].* Following semester: [[Winter 2015 2016 SPO600 Weekly Schedule]].
== Schedule Summary Table ==
This is a summary/index table. Please follow the links in each cell for additional detail which will be added below as the course proceeds -- especially for the ''Deliverables'' column.
{|cellspacing="0" width="100%" cellpadding="5" border="1" style="background: #e0e0ff"
|-
!Week!!Week of...!!width="28%"|Tuesday!!Thursdaywidth="28%"|Friday!!width="28%"|Deliverables<br/>(Summary - click for details)
|-
|1||Sep 7||style="background: #f0f0ff"|(Experience Seneca - no class)||[[#Tuesday Friday (Jan 13Sep 11)|Introduction to Software Porting, Portability, Benchmarking, and Optimization / How is code accepted into an open source project? (Lab 1)]]||[[#Thursday (Jan 15)|Benchmarking and Profiling]]||[[#Week 1 Deliverables|Set up accounts, and blog a comparision comparison of code reviews in two communities (Lab 1).]]
|-
|2||Sep 14||[[#Tuesday (Jan 20Sep 15)|Working with the code / BuildingCompiled C Lab (Lab 2)]]||[[#Thursday Friday (Jan 22Sep 18)|Build and benchmark a portion of the LAMP stack (Lab 2)Compiler Optimizations]]||[[#Week 2 Deliverables|Blog about your baseline data the Compiled C Lab (Lab 2)]]
|-
|3||Sep 21||colspan="2" align="center"|Linaro Connect - No classes scheduled<br />[[#Week 53|'''Prepare a presentation on a two selected topic about platform-specific codecompiler options.''']]||[[#Week 5 3 Deliverables|Be prepared to present your topic.]]
|-
|4||Sep 28||[[#Tuesday (Feb 17Sep 29)|Presentations on platform-specific codecompiler options.]]||[[#Thursday Friday (Feb 19Oct 2)|Presentations on platform-specific code.Algorithm Selection Lab (Lab 3)]]||[[#Week 6 4 Deliverables|Blog about your presentationand about your experience building code (Lab 3).]]
|-
|5||Oct 5|||[[#Tuesday (Jan 27Oct 6)|Profiling: Finding Discussion/hacking on the pain points Algorithm Selection Lab (Lab 3)]]||[[#Thursday Friday (Jan 29Oct 9)|Computer architecture overviewAlgorithm Selection (continued) and Benchmarks]]||[[#Week 3 5 Deliverables|Blog about the profiling results and pain points discovered (your Lab 3)results.]]
|-
|6||Oct 12||[[#Tuesday (Feb 3Oct 13)|Compiled C Lab Algorithm Selection (Lab 4continued)/ Start to plan a compiler options test tool.]]||[[#Thursday Friday (Feb 5Oct 16)|Compiler optimizationsPlan & build a compiler options test tool.]]||[[#Week 4 6 Deliverables|Blog a commentary on about your design recommendations for the Compiled C Lab (Lab 4)compiler options test tool.]]
|-
|7||Oct 19||[[#Tuesday (Feb 24Oct 20)|Assembly lab (Lab 5)Build the compiler options test tool.]]||[[#Thursday Friday (Feb 26Oct 23)|Inline assembly lab and Course ProjectsProject selection.]]||[[#Week 7 Deliverables|Blog about the Assembly Lab (Lab 5) compiler options test tool and start your selected project investigation.]]
|-style="background: #f0f0ff"
|Study Week||Oct 26||colspan="3" align="center"|Study Week - No classes! Please plan to attend [http://fsoss.ca FSOSS 2015 on Thursday/Friday]
|-
|8||Nov 2||No class scheduled. [[#Tuesday (Mar 10Nov 3)|Work on the Course Project discussion, and Reading Reference Documentation.]]||[[#Thursday Friday (Mar 12Nov 6)|Project presentations Status - Stage 1I]]||[[#Week 8 Deliverables|Blog about your project progress - this will be used to assign your 1st Project marks.]]
|-
|9||Nov 9||[[#Tuesday (Mar 17Nov 10)|UpstreamingComputer Architecture Overview]]||[[#Thursday Friday (Mar 19Nov 13)|Spinlocks and Tail Call OptimizationAssembler lab (Lab 4)]]||[[#Week 9 Deliverables|Blog about your project workand Lab 4.]]
|-
|10||Nov 16||[[#Tuesday (Mar 24Nov 17)|Portable alternatives to AssemblerDiscussion & Hack Session]]||[[#Thursday Friday (Mar 26Nov 20)|Project Presentations Discussion & Hack Session - Stage 2Framework]]||[[#Week 10 Deliverables|Blog about your project progress - this will be used to assign your 2nd Project Marks.]]
|-
|11||Nov 23||[[#Tuesday (Mar 31Nov 24)|Hack SessionSIMD and Auto-vectorization (Lab 5)]] (Professor will not be present)||[[#Thursday Friday (Apr 2Nov 27)|SIMDFramework Discussion and Hack Session]]||[[#Week 11 Deliverables|Blog about SIMD/vectorization and your project(Lab 5).]]
|-
|12||Nov 30||[[#Tuesday (Apr 7Dec 1)|Discussion & Benchmarking Discussions and Hack Session]]||[[#Thursday Friday (Apr 9Dec 4)|VectorizationMemory Barriers, Spinlocks, Inline Assembler, and Tail Call Optimizations]]||[[#Week 12 Deliverables|Blog about your work.]]
|-
|13||Dec 7||[[#Tuesday (Apr 14Dec 8)|Project Presentations Status - Stage 3II]]||[[style="background: #Thursday f0f0ff"|(Apr 16Exams in progress - no class)|Wrap-up Session]]||[[#Week 13 Deliverables|Blog about your project progress - this will be used to assign your 3rd project marks.]]
|-
|-style="background: #f0f0ff"
|Exam Week||Apr 20Dec 14||colspan="3" align="center"|Exam Week - No exam in this course!However, be sure to complete your '''[[#Final Deliverables|Final Deliverables]] by 11:59 pm on Friday, December 18'''.
|}
!Category!!Percentage!!Evaluation Dates
|-
|Communication||align="right"|20%||January September 30, October 31, February 28, March 27November 30, April 22December 11
|-
|Quizzes||align="right"|10%||May be held during any class, usually at the start of class. A minimum of 5 one-page quizzes will be given. No make-up/retake option is offered if you miss a quiz. Lowest 3 scores will not be counted.
|Labs||align="right"|10%||See deliverables column above.
|-
|Project work||align="right"|60%||March 16 Oct 20 (15%), March 31 Nov 13 (20%), April 22 December 11 (25%)
|}
<!--
== Week 1 ==
=== Tuesday (Jan 13Sep 8) === No class due to the '''Experience Seneca''' orientation program. === Friday (Sep 11) ===
==== Introduction to the Problems ====
===== Build Process =====
 
Building software is a complex task that many developers gloss over. The simple act of compiling a program invokes a process with five or more stages, including pre-proccessing, compiling, optimizing, assembling, and linking. However, a complex software system will have hundreds or even thousands of source files, as well as dozens or hundreds of build configuration options, auto configuration scripts (cmake, autotools), build scripts (such as Makefiles) to coordinate the process, test suites, and more.
In this course, you will:
# Test Help develop a test framework for C compiler optoins.# Select an open source software package.# Determine the performance of all or part impact of various C compiler options on the LAMP stackselected software.# Determine how Make recommendations for the performance of one specific part of the stack could C compiler options/flags to be improved, either specifically used on the AArch64 systems (without detriment to other systems) or on all systemsarchitecture.# Prepare a fix/patch for the software to implement that performance improvement.# Prove that your set the recommended options when compiling on AArch64 and submit these changes do not cause any unacceptable performance regressions (Note: there might be performance regressions which are considered acceptable!).# Upstream your Code - Submit your code upstream, OR report to the upstream (originating) software project so that it can be incorporated into future versions of they are already using the software. This will involve going through a code review to ensure that your code is compatible with and acceptable to the upstream communityoptimal flags.
==== General Course Information ====
* All classes will be held in an [[Active Learning Classroom]] -- you are encouraged to bring your own laptop to class. If you do not have a laptop, consider signing one out of the Learning Commons for class, or using a smartphone with an HDMI adapter.
* For more course information, refer to the SPO600 Weekly Schedule (this page), the [http://www.senecacollege.ca/ssos/findWithoutSemester/spo600/sict Course Outline], and [[SPO600 Course Policies]].
< !-- * Introduction to the [http://linaro.org Linaro] Code Porting/Optimization project. -- >< !-- * Optional: You can participate in the [http://linaro.org Linaro] Code Porting/Optimization contest. For details, see the [http://www.youtube.com/watch?v=Lo1dBB3tke8 YouTube video] of Jon "maddog" Hall and Steve Mcintyre at Linaro Connect USA 2013. -- >
==== Discussion of how open source communities work ====
* Background for the [[SPO600 Code Review Lab|Code Review Lab (Lab 1)]].
 
=== Thursday (Jan 15) ===
 
* Benchmarking
* Profiling
=== Week 1 Deliverables ===
# Set up your [[SPO600 Communication Tools]] - in particular, set up a blog and add it to [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT] (via the [[Planet CDOT Feed List]]).
# Add yourself to the [[Winter Fall 2015 SPO600 Participants]] page (leave the projects columns blank).
# Generate a [[SSH#Using_Public_Keys_with_SSH|pair of keys]] for [[SSH]] and email the public key to your professor.
# Sign and return the [[Open Source Professional Option Student Agreement]].
 
# Optional but recommended: [[SPO600 Host Setup|Set up a personal Fedora system]].
# Optional but recommended: Purchase an AArch64 development board.
 
== Week 2 ==
=== Tuesday (Jan 20Sep 15) === 
{{Admon/tip|Bring Your Laptop|Classes are held in a [[Active Learning Classroom]]. If you have a laptop or other device with a VGA or HDMI output (such as a smartphone!) please bring it. You'll need either a local linux environment or an [[SSH]] client -- which is built-in to Linux, Mac, and Chromebook systems, and readily available for Windows, Android, and iOS devices.}}
Status Check* Introductions around the Room** Name** Program** Interest in the course** Results of <code>gzip</code> benchmarking and most interesting thing you observed* Check the [[SPO600 ServersCompiled C Lab|server accounts]] that were set up with your [[SSHCompiled C Lab (Lab 2)]] keys
* Sheets from Last Week
** Open Source Student Agreement
 === Friday (Sep 18) === * Introductions* [[Compiler Optimizations]]* Introduction to the [[Fall 2015 SPO600 Compiler Options Presentation|Compiler Options Presentation]] === Week 2 Deliverables === * Blog about your [[SPO600 Code Review Lab|Code Review Lab (Lab 1)]] and [[SPO600 Compiled C Lab|Lab 2]] experience and results. For lab 2, consider the optimizations and transformations that the compiler performed. Remember that these posts (as all of your blog posts) will be marked both for communication (clarity, quality of writing (including grammar and spelling), formatting, use of links, completeness) and for content (lab completion and results). Your posts should contain both factual results as well as your reflections on the meaning of those results, the experience of performing the lab, and what you have learned. == Week 3 == This week [[User:Chris Tyler|your professor]] is at [http://connect.linaro.org/sfo15/ Linaro Connect], an engineering conference run by [http://www.linaro.org Linaro] - a distributed not-for-profit collaborative technology company focused on Linux on ARM. * [[Fall 2015 SPO600 Compiler Options Presentation|Select and prepare to teach the class about two compiler options]]. === Week 3 Deliverables ===* Be prepared to give your [[Fall 2015 SPO600 Compiler Options Presentation|presentation]] on Tuesday of next week (September 29). == Week 4 == === Tuesday (Sep 29) ===* Presentations === Friday (Oct 2) ===* Presentations* Introduction to ARM64 hardware* [[SPO600 Algorithm Selection Lab|Algorithm Selection Lab (Lab 3)]] === Week 4 Deliverables ===* Blog your [[Fall 2015 SPO600 Compiler Options Presentation|presentation]], incorporating any feedback and Q&A input that was given during/after the presentation in class. == Week 5 == === Tuesday (Oct 6) ===* Class discussion/hacking on [[SPO600 Algorithm Selection Lab|Lab 3]]. === Friday (Oct 9) ===* More on Lab 3* Discussion of Benchmarking === Week 5 Deliverables ===* Blog your [[SPO600 Algorithm Selection Lab|Lab 3]] results. == Week 6 == === Tuesday (Oct 13) ===* Discussion of benchmarking** Control of variables*** Competition for system resources*** Repeatability* Planning for a Compiler Options Test Framework === Friday (Oct 16) ===* Compiler Options Framework** Divide up tasks** Start development === Week 6 Deliverables ===* Blog your recommendations for the test framework design.  == Week 7 == === Tuesday (Oct 20) ===* Build the [[SPO600 Framework Project|Compiler Options Test Framework]] === Friday (Oct 23) ===* Project selection** Your task over reading week: Become an expert in building your selected software, and then make it work with the [[SPO600 Framework Project|Compiler Options Test Framework]] === Week 7 Deliverables ===* Blog about the compiler options framework, and your work on that project.* Blog about your selected project. == Week 8 == === Tuesday (Nov 3) ===* No class scheduled - your [[User:Chris Tyler|prof]] is in Whitehorse, YK at an NSERC workshop.* Please work on your [[Fall 2015 SPO600 Course Project|project]], and be ready to present on Friday. === Friday (Nov 6) ===* Present your Stage I results for your [[Fall 2015 SPO600 Course Project|project]]. === Week 8 Deliverables === * Blog about your [[Fall 2015 SPO600 Course Project|stage I project results]]. This will be used to assign the first marks for your project. == Week 9 == === Tuesday (Nov 10) === * [[Computer Architecture]] overview (see also the [[:Category:Computer Architecture|Computer Architecture Category]]) === Friday (Nov 13) === * [[SPO600 Assembler Lab|Assembly language lab]] (lab 4) === Week 9 Deliverables === * Blog about your project progress (2+ posts per week).* Blog the [[SPO600 Assembler Lab|Assembly language lab]] -- include your results, a link to your source code, and your reflections on the experience.   == Week 10 == === Tuesday (Nov 17) ===* Discussion & Hack Session** [[SPO600 Assembler Lab|Assembly language lab (Lab 4) results]]** Testing Framework === Friday (Nov 20) ===* Hack session on the Testing Framework === Week 10 Deliverables ===* Blog about your project work* Blog about your Lab 5 results == Week 11 == === Tuesday (Nov 22) ===* SIMD and Vectorization*[[SPO600 Vectorization Lab|Vectorization Lab (Lab 6)]] === Friday (Nov 25) ===* Discussion of the State of the Framework* Hack Session === Week 11 Deliverables ===* Blog your [[SPO600 Vectorization Lab|Lab 6]] results. == Week 12 == === Tuesday (Dec 1) ===* Survey Stage II Results - Brief Presentations === Friday (OptionalDec 4)===* '''No Class''' - Early start to Exam Week === Week 12 Deliverables ===* Blog about your Project Status - Stage II Results** Provide results for the various flag combinations you tested** Discuss the results, highlighting any anomalies == Final Deliverables ==* Blog about your Project Status - Stage III Results** Important: Incorporate any feedback on your Stage II results** Outline what you learned from your investigation into various combination of GCC flags** Discuss what the upstream projects should do based on these results** Communicate the results to the upstream project, if appropriate** Outline further investigation that should be undertaken* Blog a reflective blog post on the course** What you have learned** What you already knew** What was good or bad about the way the course proceeded]** How you might use this knowledge in the future* This is the last chance to submit any lab postings, etc.'''All blog postings must be in by Friday, December 18, at 11:59 pm to be included in the final grade.''' <!--
Working with the Code
* Final date for posting about your project: April 22.
< !== Week 3 ==This week [[User:Chris Tyler|your professor]] is at [http://connect.linaro.org/sfo15/ Linaro Connect], an engineering conference run by [http://www.linaro.org Linaro] -a distributed not-for-profit collaborative technology company focused on Linux on ARM. You can [https://www.linaro.org/connect/lcu/lcu14/remote/ participate remotely] and may find some of the sessions interesting.  * [[Fall 2015 SPO600 Compiler Options Presentation|Select and prepare to teach the class about a specific small topic related to assembly language / machine language programming]]. === Week 3 Deliverables ===* Be prepared to give your [[Fall 2015 SPO600 Compiler Options Presentation|presentation]] on Tuesday of next week (September 23). 
== Misc / Relocated ==
* [[Winter 2015 SPO600 Assembly Language Presentation|Select and prepare to teach the class about a specific small topic related to assembly language / machine language programming]].
 
== Week 3 ==
This week [[User:Chris Tyler|your professor]] is at [https://www.linaro.org/connect/lcu/lcu14/ Linaro Connect], an engineering conference run by [http://www.linaro.org Linaro] - a distributed not-for-profit collaborative technology company focused on Linux on ARM. You can [https://www.linaro.org/connect/lcu/lcu14/remote/ participate remotely] and may find some of the sessions interesting.
 
* [[Fall 2014 SPO600 Assembly Language Presentation|Select and prepare to teach the class about a specific small topic related to assembly language / machine language programming]].
 
=== Week 3 Deliverables ===
* Be prepared to give your [[Fall 2014 SPO600 Assembly Language Presentation|presentation]] on Tuesday of next week (September 23).
== Week 4 ==

Navigation menu