Changes

Jump to: navigation, search

SPO600 - Information for Prospective Students

3,256 bytes added, 22:21, 4 August 2019
What is this course about?
[[Category:SPO600]]'''Interested in taking [[SPO600]] -- Software Portability and Optimization? Here is some background information you may find useful:'''
'''What is <!-- {{Admon/caution|SPO600 will NOT be offered in Winter 2019|Due to the relocation of the Centre for Development of Open Technology (CDOT) to Newnham campus as part of the [http://www.senecacollege.ca/2020/ Seneca 2020] initiative, this course about?'''will not be offered in the Winter 2019 or Summer 2019 semesters. The information provided below may be useful if you are considering taking this course in Fall 2019.}} -->
This course Here is about making existing software work on a new type of computer (porting) and making software work as efficiently as possible (optimization). These topics lead into an investigation of how computer programs work at their lowest levels (assembly language / machine language) and how compilers convert highsome background information you may find useful:[[File:Spo600-level code into machine code, including optimizations that they performwordcloud.png|right|500px]]
== In this course, you'll be working with open source software, since the source code for that software is readily available. We'll specifically be working with software that runs on Linux on 64-bit ARM computers.a Nutshell ==
This is '''If you are a project-oriented courseSystem/Network Adminsitration (CTY) or Software Development (CPA/CPD) student and... Previous offerings '''* ...are intrigued by the inner workings of this course focused on porting code; in Winter 2015 there will be an increased focus on optimizationcomputers* ...want to understand how computer software ''really'' works* ...want to find out why most of the things programmers believe about the software they write is false
'''Who can take this course?And you...'''* ...are not afraid to go deep* ...are interested in next-generation computer technology* ...want to work with complex tools and software used in the real world* ...want to collaborate with global open source communities* ...want the highest performance out of your systems
This course is open to both '''CTYThen this might just be the Professional Option course for you!''' (system and network administration) and '''CPA''' (software development) students. Each group brings unique but overlapping skills: CTY students have a strong understanding of operating systems and administrative procedures, and CPA students have a strong understanding of programming. This course provides a range of project opportunities requiring different combinations of skills from each program of study.
== What is this course about? == This course is about making existing software work on a new type of computer (porting) and making software work as efficiently as possible (optimization). These topics lead into an investigation of computer architecture (the design of the hardware), how computer programs work at their lowest levels (assembly language / machine language) and how compilers convert high-level code into machine code, including optimizations that they perform. In this course, you'll be working with open source software, since the source code for that software is readily available for you to examine, modify, and use. We''Why ll specifically be working with software that runs on Linux on 64-bit ARM computers. Specifically, you will:* program in assembly language on at least two architectures* understand how the compiler is (significantly!) rewriting your code* dig into some large open-source software code bases* test the performance impact of code and compilation changes* collaborate with open source communities globally This is a project-oriented course, and each semester is different. In Fall 2019 there will be a primary focus on optimization. == Who can take this course?== This course is open to both '''CNS/CTY''' (system and network administration) and '''CPA/CPD'''(software development) students. Each group brings unique but overlapping skills: CTY students have a strong understanding of operating systems and administrative procedures, and CPA students have a strong understanding of programming. This course provides a range of project opportunities requiring different combinations of skills from each program of study. == What are the course prerequisites, and why? == IPC144 (Introduction to Programming in C) is a prerequisite for this course - you need to have a solid, basic understanding of C to participate effectively. You can select a project that fits your particular combination of other system administration and/or software development skills (system installation, Bash or Python scripting, programming in various languages, software packaging, network testing, and so forth). In addition, you'll need skills in scripting (for task automation) or in object oriented programming (for program analysis and optimization), and therefore one of these courses is required as a prerequisite: OPS435, OOP344, or OOP345. == Why take this course? ==
In this course, you'll learn about the internal details of computer architecture and the lowest levels of programming - the instructions that a compiler produces from your code. You'll also learn how to port code to work on a new architecture (or on a range of architectures), benchmark software performance, improve software performance by changing the code or the way it is built, and debug code. This is a project-based course, and you will gain experience working directly with one or more open source communities on software that is in everyday use.
After completing this course, you will understand the fundamentals of computer architecture and operation and be able to build and/or write software that performs well, work with multiple computer architectures, and participate in open source projects. This is  == Is this an easy course? == No! - It's a challenging course but . However, it should be rewarding covers material which is not covered elsewhere in the program, and if you like to understand computer technology in detail and how hardware and software interact, you may really enjoy this course. The knowledge and skills covered in this course are of practical value to both programmers and system administrators. == Who teaches this course? == SPO600 is taught by [[User:Chris Tyler|Chris Tyler]]. I've been teaching in the [http://ict.senecacollege.ca School of ICT] at Seneca since 2001 and am now also an [http://www.nserc-crsng.gc.ca/Professors-Professeurs/RPP-PP/IRCC-CRIC_eng.asp Industrial Research Chair] (IRCC) in [[Open Source Technology for students interested Emerging Platforms]] in [[CDOT]] -- which means that I spend the details majority of my time doing applied research on open source software and next-generation computer architecture and software optimizationtechnology.}}
'''Is == How is this an easy courseconnected to CDOT?'''==
No! - It's The [http://cdot.senecacollege.ca Centre for Development of Open Technology] (CDOT) is a challenging technology centre focused on Open Source. This course. However, it covers material which is not covered elsewhere in associated with the IRCC's applied research program, and if you like so participants will have access to understand technology some research resources (such as computers in detailthe [[Enterprise Hyperscale Lab]]). In addition, you may really enjoy participation in this course. It's also a very practical coursemay help prepare students for [[CDOT Job Opportunities]].
'''== Have more questions about SPO600?'''==
Please contact Professor [[User:Chris Tyler|Chris Tyler]] (via email at [mailto:chris.tyler@senecacollege.ca chris.tyler@senecacollege.ca]).
[[SPO600|Return to the SPO600 homepage.]]

Navigation menu