Scientific Computing Course
Title: Scientific Computing
Catalog number: IT&C 530, section 1 (online)
Semesters: Fall and Winter
Credit Hours: 3
About the Course
The Scientific Computing course has been taught since Winter 2016, originally as a special topics class (IT&C 515R). The course is for graduate and advanced undergraduate students. Students come from a wide variety of programs such as Biology, Chemistry, Economics, Mechanical Engineering, and Physics; typically, about half are graduate students and about half are undergraduates.
This course is intended for students whose current or future coursework or research involves computational science (e.g. computational fluid dynamics, genomics, finite element analysis, economics simulations, computational linguistics, physics, etc).
The class will help students learn the principles of operating in a typical scientific computing environment. Topics include typical Linux shells and commands, hardware (CPU, memory, network, etc), storage management, job scheduling, code and workflow optimization, code management, results verification, and programming. A semester-long project will help students apply the principles that are taught in class.
Beginning Winter 2021, the course is available exclusively through BYU Online (see this FAQ page for details about BYU Online). It is important to note that BYU Online is semester-based and included in your tuition, unlike Independent Study.
This course is taught in C++ and Julia (starting Fall 2023). Some language instruction will occur during the course and skeleton code is used in some places, but prior C++ knowledge is extremely helpful. If you want a free C++ primer, consider something like W3Schools. Free Julia resources are available here. Julia is much easier to learn than C++; most people don't need to learn it ahead of time.
Prior to taking the class, students must know how to program in at least one language, including knowing how to write conditionals, loops, and functions. C++ is strongly preferred. Experience with only the R programming language has been found to be insufficient preparation. No particular course is required as a prerequisite, though CS 142 or similar is very strongly recommended.
A computer science background is not necessary except for the programming skills requirement. The less programming experience you have the harder the class will be. We have found that people of most skill levels do very well in the class, though it definitely takes more effort for those with less of a programming background. If you don't have much experience programming, please plan to spend additional effort learning some of the programming concepts. The first phase of the semester-long project is one of the easier assignments, and is a good way to determine whether you're prepared for the class. Please email us or open a support ticket if you have questions.
Many students will be able to use this class to fulfill an elective if you petition your program. You must contact your program to see if this is possible.