Dr. Michelle Mills Strout
Office: 342 CS Building
Office Hours in 342: TBD or by appointment
Lecture Time and Place:
3:00-3:50pm, Monday, Wednesday, and Friday, Room Comp Sci 325

We have entered a new era of computing in that clock speeds stopped doubling every couple of years in 2005. The free performance ride is over. The only way to more accurately simulate science phenomena and engineering designs, as well as provide more realistic movies and games, is to leverage evolving multicore and manycore (i.e. GPU) processors. Programming models and languages are experiencing a renaissance with industry and academia developing many new ways to program these highly parallel machines (e.g. Intel TBB, Google Go, Cray Chapel, Apple Swift, IBM X10, ...).

Here at CSU we research and develop techniques for representing and transforming computations specified using various parallel programming constructs so that parallelism and data locality can be coordinated when the computations are mapped to multicore and manycore architectures. Some of the techniques we have developed have been incorporated into compilers such as IBM's xlc compiler. Students benefit by engaging in this research area by becoming candidates for the many programming language implementation positions becoming available at companies developing new parallel programming models. We have and have had students working on compilers at Mathworks, IBM, Cray Inc., Google, Corespeq, Los Alamos National Laboratory, and Lawrence Livermore National Laboratory to name a few.

This course will cover programming language design and implementation using the LLVM compiler infrastructure. LLVM is open source, industry supported, and used heavily in industry and in programming languages design and implementation research. The LLVM compiler infrastructure and Clang are used to implement many of the new languages being developed. Within LLVM and associated projects, students will be learning data-flow analysis based program optimization and loop transformations based on the polyhedral model.

No textbooks will be required for CS 553 in Fall 2014. Experience programming in C++ is required (for example CS 253 here at CSU). Some background in parsing and compiler intermediate representations would be helpful but is not necessary (for example, a course like CS 453 here at CSU). If you are interested, but unsure of your background, I would be happy to discuss it with you.

PA3 has been posted. Additionally, RamCT is up-to-date with grades including for the project proposal. Project proposal rewrites have been common in the past, and if you decide to do a re-write, they are due this Friday October 24th. (October 19, 2014)

PA3 is still being debugged. It will be posted on Monday. (October 17, 2014)

The midterm is this Friday from 3-4:15pm in Compsci 325. You may use one side of one sheet (8.5x11) of paper with any notes you like. (October 8, 2014)

The midterm will be Friday next week from 3-4:15pm in Compsci 325. (October 2, 2014)

The PA2 deadline has been moved to October 3rd at 11:59pm. (September 29, 2014)

PA2 has been posted. See the assignments page. (September 8, 2014)

The dynamic instrumentation piece of PA1 has now been included in the PA1 writeup. (September 3, 2014)

The syllabus, term project, and PA1 have been posted. (August 24, 2014)

Last modified: October 19, 2014