Russ Miller
UB Distinguished Professor

Dept of Computer Science & Engineering
State University of New York at Buffalo


Media Coverage
Major Results
CI Lab
Personal Info
Contact Info
  • CS 237: Introduction to Scientific Computing

  • This course offers an introduction to the fundamental numerical techniques used in high-performance scientific computing. These methods include sorting, numerical integration, root finding for nonlinear systems, elementary linear algebra, and basic ordinary differential equations. The emphasis of this course is on an experimental approach to scientific computing. The students will learn the basics of Unix, will write and debug programs in FORTRAN, and will use computational and visualization tools in Matlab.

  • CSE 4/529: Algorithms for Modern Computing Systems
    CSE 4/531: Analysis of Algorithms

    This course(s) covers fundamental concepts of design and analysis of algorithms for modern computing systems. Such compute systems include network-based fine-grained parallel computers, shared-memory computers, general multi-core and multiple processor systems, GPU-based systems, clusters, grids, and clouds.

    The first part of the course will focus on i) methods of asymptotic analysis, ii) the traditional von Neumann architecture (sequential computer), as well as iii) the aforementioned modern computing systems. The second part of the course will focus on fundamental computational paradigms and their implementation on a variety of modern computational systems.

    Much of the analysis will be considered in terms of running time, size of data, number of processors/cores, interconnection networks, cost, and work, to name a few. Asymptotic analysis will be used as a measure of these performance metrics and design options.

    Since the mid-2000s, this course has been taught as a theoretical course with three exams serving as assessments. While homeworks and programs are assigned, they are not collected/graded and have no impact on the students' grades.

    Note that I have been teaching this course since 1986, initially under the title of Analysis of Algorithms (CSE4/531). In 2013, the Department relabeled this course to CSE4/529 to distinguish it from the traditional sequential algorithms course, which now uses the course number CSE4/531.

    In recent years, the required text for the course has been Algorithms Sequential and Parallel: A Unified Approach (Third Edition).

    With permission, cool, and very useful, images by Lauren Richardson, 2021 (Use your mouse to navigate around on these models.):

    Current and Previous CSE4/529 and CSE4/531 Courses

    Spring 2024
    Fall 2023
    Spring 2023
    Fall 2022
    Spring 2022
    Fall 2021
    Fall 2020
    Fall 2019
    Spring 2019
    Fall 2018
                            Fall 2017
    Fall 2016
    Fall 2015
    Fall 2014
    Fall 2013
    Spring 2012
    Spring 2011
    Spring 2010
    Spring 1998
    Spring 1997
    Spring 1996

  • CSE 633: Parallel Algorithms

    The focus of this course is on the design, implementation, and analysis of student-chosen parallel solution(s) to disciplinary problems of interest to the student and their implementation on modern large-scale multiprocessor/multi-core/GPGPU-based systems. Students will have access to a variety of large multiprocessor systems and will receive instruction on the efficient utilization of such systems in addition to a variety of means (MPI, OpenMP, CUDA) of implementing algorithms to run efficiently on such systems. On-line tutorials and materials are available for MPI, OpenMP, and CUDA.

    Prerequisite: Graduate standing in a STEM-based department. Note that it is advantageous to have taken CSE 529 prior to this class, but it is not required.

    More detailed course descriptions and presentations of recent offerings follow.

    (roughly, in reverse chronological order)
  • Programming Massively Parallel Systems (Fall, 2017, 2018, 2019, 2020, 2021, 2022)

  • Stuff Miller Likes (Spring, 2016)

    • Registration is limited and will be by permission. Material should be proposed by the student during the initial meeting.
  • Programming Massively Parallel Systems (Spring, 2013)

    • This seminar focuses on student projects involvinig high-performance computing systems.
    • Students will program HPC systems using, for example, OpenMP, MPI, CUDA, or similar.
    • Students will work on projects of their own choosing.
    • We will meet weekly, at a time convenient to all of those who register, and discuss goals and progress.
    • Students will share experiences and information in an effort to expedite the progress of all participants.
    • Please see information on related seminars on this page.
    • Available for 1, 2, or 3 credits.
    • Tutorials and fundamental information (e.g., MPI, PBS, CUDA, etc.) can be found through the material listed under CSE633 and the related CSE7XX seminars on this page.
  • Programming Massively Parallel GPGPU Systems (Fall 2009, Spring 2011, Spring, 2012)

  • Honors Seminar (Freshman): Computing at the High End (Fall, 2010)

  • Cyberinfrastructure (Fall 2007, Spring 2008)

  • Seminar on Grid Computing (2004-2006)

This seminar series focuses on fundamental aspects of Grid computing and Cyberinfrastructure. Some of the student presentations are available.

  • Seminar on WWW

This "seminar" is open to graduate students and undergraduates, by permission of instructor. Topics to be covered include HTML, CGI, perl, Java, and issues of security, to name a few.

CCR-Affiliated Summer Workshops, Courses, and Certificates