Giter VIP home page Giter VIP logo

comp206_fall2018_lectures_public's Introduction

Welcome to COMP 206!

This is the course outline for COMP206 in Fall 2018 term. Welcome to the course!

Defining the Course

COMP 206 - Software Systems is a course that teaches important aspects of low-level programming that are crucial to creating pieces of software that an interoperate across different computers, different types of devices, and online across the world. We study these topics conceptually as well as through hands-on creation of software in the C programming language. By the end of the course, you should have a strong ability to program in C generally. More importantly, you should be able to “Think in C”, which is often a helpful way to get insights on the way that operating systems and more recent programming languages work.

Objectives

  • Become familiar with common challenges in creating software systems and best-practice solutions
  • Understand how software runs on the Linux operating system, including the structure of a running process, scheduling, user and file permission and networking
  • Experience implementing software system elements using C programming language
  • Experience setting up and maintaining a software system with Linux tools, Github and CMake

Topic List

  • Reasons for being of software systems.
  • Examples and history.
  • Study of a modern OS
  • Linux operating system, POSIX, standard Linux tools
  • Aspects of system software in C:
    • Input and output to files and terminal
    • Libraries and linking
    • Memory allocation
    • Pointers
    • System calls
    • Socket communication
    • Multi-process software systems - synchronization
    • Web-based software
  • Case studies and example problems

Term Schedule

Our course schedule

Instructor and TA Information

Instructor Info

David Meger: Office McConnell Engineering 112 N (north wing)
Office hours: Wednesdays 1pm - 2:30pm and Fridays 9:30am - 11am
Email: [email protected] (please try My Courses Discussion first for Assignment queries)

Teaching Assistants

The TAs will be offering guided tutorial sessions directly targetted to each assignment, as well as weekly office hours. The tutorial schedule will be updated throughout the term as we schedule more sessions, so check back here to find out the latest.

Current Tutorial Schedule:

  • Tutorial on Linux/Shell with target on Assignment 1:
    • Friday 12:30-2:30pm Trottier 3120.

Office Hours Schedule. Each office hour specified will be given every week in Trottier 3090, until Dec 14th, 2018, except when McGill is closed for official holidays or the election):

  • Mondays @ 3pm
  • Tuesdays @ 2pm
  • Wednesdays @ 10am
  • Thursdays @ 10am
  • Fridays @ 1pm

When possible, please try to use the My Courses Discussions to ask questions, since there everyone can see the response and share the information. In case you need to mail the TAs directly, they can be reached at:

Assessment

  • Assignments (5): 40%
  • Online Quizes (5): 10%
  • Midterm Exam (1): 10%
  • Final Exam (during official exam period): 40%

Assignment deadlines are strict, however we will count the best 4 out of 5 marks, so you can choose to skip one during the term in case of scheduling conflicts. Quizes are given online through My Courses and we will also count the best 4 out of 5.
Exemptions (not extensions) are possible for cases of medical, religious or family needs that prevent participation in some assesment (other than the final).

Texts and Resources

There is no required book for this course. Provided course notes and slides will be the core method for learning and studying the material. We will often point to useful resources online and sometimes even give assigned readings. In case of wanting additional background, each of textbooks can be helpful, in order of decreasing relevance:

  1. The C Programming Language, 2nd Edition by Kernighan and Ritchie. ISBN: 01311036282.
  2. Software Systems by Vybihal and Azar. ISBN: 978-0-7575-5727-9
  3. Learning the Unix Operating System by Jerry Peek, John Strang, and Grace Todino
  4. C for Java Programmers by Tomas’s Muldner. ISBN: 0201702797

Diversity and Inclusion

COMP 206 is meant to be an introductory course to one of the most important areas of CS, and indeed one of the most important skill-sets that people will use to influence the world in our lifetimes. Our goal is to make this content equally accessible to students of all backgrounds and we work to pro-actively acknowledge and address any bias that may occur during the term. Equal treatment of students from every gender, race and orientation is a top priority. We openly welcome suggestions on how to improve inclusion, by contacting the TAs or instructor either with your name or anonymously.

Examinations and Grading

The midterm and final will be closed book, with a one-page crib sheet (double sided) allowed only and no calculators. The exams will be a mix of multiple-choice and written answers testing both the basic concepts of the course and the ability to create programs that exercise this knowledge. No make-up exams are possible. In the case that you cannot write a midterm, with supporting documentation, the midterm weight can be instead moved to the Final Exam. All of the TAs and instructor are humans (for now) and mistakes in grading can happen. Re-grading requests should be made first to the TA who marked the work. The request should include an email explaining where you think the confusion or error was made and any additional evidence required for re-marking.

Policy on Plagiarism and Independent Work

COMP206 is one of he most programming intensive courses in our undergraduate program. While we will have written tests that ensure you know the material, the real intention of the course is to ensure you have the skills to write effective Software Systems yourself. These skills are needed in the workplace and in research to help you change the world and earn a good salary.
In order to get the experience and develop your own Software Systems skills, you must turn in programs that you have completed yourself. You can get tips and ideas from myself, TAs and other students, but you must do the software development yourself, which means typing in all of the code in a way you understand, running and debugging it and ensuring it passes the specifications given in the assignment document.

THINGS THAT ARE NOT OK:

  • Copy/pasting directly from the code of other students.
  • Sending the assignment to any paid or free service, either local or online for someone else to solve.
  • Giving your code to others.

THINGS THAT ARE OK:

  • You can copy/paste from the web if you find resources there, since that’s exactly how many working programmers operate.
  • You can take notes or phone images of code that the instructor or TA give in office hours. We plan to be very helpful there and will often give really good hints on how to set up the solutions, so we do recommend coming. We will also be fair and ensure you’re left with enough parts to solve yourself afterwards.
  • You can share notes taken at a TA session with other students, as long as you do not include your own code that you have written afterwards.

I hope everyone will follow these rules and we have a great term. We will be using automated tools and our own manual checks to ensure this is the case. In case of any detected plagiarism, we will proactively report through McGill’s academic disciplinary procedure.

Language Policy

As is McGill’s policy, all work can be submitted in either English or French.

comp206_fall2018_lectures_public's People

Contributors

anirudhajitani avatar dmeger avatar pjots avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.