Academic Courses

Educating the next generation of researchers through a unique scientific computing curriculum

TACC inspires and educates the next generation of computational scientists and technologists, and increases the public's understanding of the roles computing and science play in shaping our society. These courses, though originally designed with engineers and natural scientists in mind, have broadened to not only educate the next generation of researchers and computational professionals, but also the social scientists, the artists, and the historians. TACC has developed a unique scientific computing curriculum for The University of Texas at Austin.

In partnership with TACC, UT Austin offers seven undergraduate and graduate level courses in supercomputing through the Department of Statistics and Data Science in the College of Natural Sciences, as well as the Computational Engineering Department in the Cockrell School of Engineering. The Natural Sciences curriculum allows students to earn a Certificate of Scientific Computation (undergraduate students), or a Portfolio in Scientific Computation (graduate students), which is equivalent to earning a minor in the area. Whereas the Engineering curriculum is designed to help students understand key concepts in scientific software engineering, to build better systems, and to unlock new scientific discoveries.

TACC researchers, who are experts in high-performance computing, teach the courses. Students have the opportunity to apply the theories learned in class on TACC's HPC and Cloud systems. Students across engineering, science, mathematics, computer science, and liberal arts are all welcome.

Courses Offered by TACC

Statistics and Data Science

SDS 322/392 — Introduction to Scientific Programming
Introduction to programming using both the C and Fortran (95, 2003) languages, with applications to basic scientific problems. Covers common data types and structures, control structures, algorithms, performance measurement, and interoperability.

SDS 335/394 — Science and Technical Computing
Comprehensive introduction to computing techniques and methods applicable to many scientific disciplines and technical applications. Covers computer hardware and operating systems, systems software and tools, code development, numerical methods and math libraries, and basi visualization and data analysis tools.

SDS 374C/394C — Parallel Programming for Scientists and Engineers
Parallel computing principles, architectures, and technologies. Parallel application development, performance, and scalability. Prepares students to formulate and develop parallel algorithms to implement effective applications for parallel computing systems.

Special topics in Advanced Computing (offered as needed)

SDS 374D/394D — Distributed and Grid Computing for Scientists and Engineers
Distributed and grid computing principles and technologies. Covers common modes of grid computing for scientific applications, developing grid enabled applications, future trends in grid computing.

SDS 374E/394E — Visualization and Data Analysis for Scientists and Engineers
Scientific visualization principles, practices and technologies, including remote and collaborative visualization. Also introduces statistical analysis, data mining and feature detection.

Computational Engineering

COE 322 — Scientific Computation
Explores the basic tools needed for developing scientific computing software. These include advanced programming languages (e.g. C, C++, python), object oriented programming and data structures. Subjects may include abstract data types; creation, initialization, and destruction of objects; class hierarchies; polymorphism, inheritance and dynamic binding; generic programming using templates, linked lists, queues, stacks, trees and algorithms such as searching, sorting, and hashing.

COE 332 — Software Engineering and Design
Covers methods and tools for planning, designing, implementing, validating and maintaining large software systems. May include project work to build a software system as a team, using appropriate software engineering tools and techniques.