MPCS 51100 Advanced Programming (Autumn 2016)

Section 1
Instructor(s) Siegel, Andrew (siegela)
Location Young 302
Meeting Times Monday 5:30pm - 8:30pm
Fulfills Core Programming

Syllabus

*Please note: This is the syllabus from the 2015/16 edition of this course. Information is subject to change.*


Course Description

MPCS 51100 - Advanced Programming fulfils the MPCS Core Programming requirement, but is intended for students who are joining the program with an existing degree in Computer Science, or with substantial experience in programming. This course will be taught primarily in C, including an accelerated introduction to the C language for students who have not used C before. The course will cover advanced data structures and topics in concurrent and multicore programming not covered in the Java Programming or C Programming courses.

Contents

  • Week 1: C intensive overview
  • Week 2: Trees
  • Week 3: Hash tables
  • Week 4: Union finds
  • Week 5: Graphs
  • Week 6: Intro to multicore/pthreads programming model
  • Week 7: Applications of multicore -- example problems
  • Week 8: Alternative approaches: java task-based, OpenMP, etfc.
  • Week 9: Building larger codes: software engineering, abstraction, development tools, compilers, etc.
  • Week 10: Course projects/special topics

Note: Although some of the above topics overlap with topics covered in C Programming and Java Programming, they are covered in more depth (and at a faster pace) in this class.

Course Prerequisites

To take this class, students must meet one of the following requirements:

For students who have taken the programming immersion course, a minimum grade of A- plus the endorsement of the MPCS 50101 instructor will be required.

For students who take the programming placement exam, they must score a “High Pass” score (the minimum score for a “High Pass” is specified at the time of the exam).

Other Prerequisites

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51040-1 -- C Programming
  • MPCS 56420-1 -- Bioinformatics for Computer Scientists
  • MPCS 51205-1 -- Topics in Software Engineering
  • MPCS 51036-1 -- Java Programming