Courses:
CS 233: Essentials of Data Science (2024 - present)
Catalog Description: Introduction to data formats, data collection, data manipulation, data visu- alization, data cleaning, and data analysis. Introduction to probability and information theory, basic database queries, supervised classification, inter- pretation of results, and ethical considerations.CS 133: Foundations of Data Science (2023 - present)
Catalog Description: Introduction to Python programming and common Python data science libraries. Simple data visualization. Introduction to basic statistics including distributions and random sampling, testing statistical hypotheses, estimation, prediction, comparison, causality, and decisions. Introduction to classification methods.CS421. Algorithms (2022 - present)
Catalog Description: Asymptotic analysis and recurrences. Divide-and-conquer, dynamic programming, greedy algorithms, graph algorithms, and string matching. Introduction to tractability and NP-Completeness.CS507. Computing Foundation for Compuational Sciences and Engineering (2017 - present)
A newly designed course with the scope of writing high-quality code in scientific computing. Topics include: programming skills, object-oriented programming,memory management, data structures, algorithms, complexity of algorithms, sorting and searching, writing, testing, and debugging scientific code, profiling, optimazation,performance, portability and scalability, introduction to high-performance computing. I deeply appreciate the help from Prof. Xuening Bai at Tsinghua University, China and Prof. James Stone at Princeton University.CS321. Data Structures and Algorithms (2019 - present)
A traditional core course for computer science majors. Course description: Sorting, searching, and order statistics. Further data structures: trees, priority queues, dictionaries, balanced search trees, B-Trees, heaps, hash tables, and graphs. Textbook: Introduction to AlgorithmsCS221. Computer Science II -- Object-Oriented Design and Data Structures in Java (2018 - present)
A traditional core course for computer science majors. It is also very useful for students majoring in Scientific Computing. Course description: Object-oriented design including inheritance, polymorphism, and dynamic binding, graphical user interfaces, recursion, introduction to program correctness and testing/analysis of time/space requirements. Basic data structures: lists, collections, stacks, and queues. Basic searching and sorting. Textbook: Java FoundationsME271. Introduction to Computation for Engineers (2016 - 2017)
Textbook: Numerical Methods in Engineering with MATLAB by Jaan KiusalaasPHY325. Scientific Computing (Computational Physics) (2015)
A traditional physics course with an emphasis on "numerical algorithms" at undergraduate level. Students who are interested in Scientific Computing are highly recommanded to take advanced courses such as Computing Foundation for Computational Science and Parallel Scientific Computing, Numerical Methods (continuation of basic numerical methods). I am grateful to the help from Prof. Mark Newman, the author of the following textbook.Textbook: Computational Physics, by Mark Newman
Other Courses of interest for teaching
1. Introduction to Astrophysics
Textbook: An Introduction to Modern Astrophysics, by Carroll and Ostile
For phsyics and astrophysics majors,
Textbook: Equilibrium Thermodynamics, by Adkins, C. J.
For engineering majors,
Textbook: Thermodynamics: An Engineering Approach, by Cengel, Y. and Boles, M.
For phsyics and astrophysics majors,
Textbook: Principles of Astrophysical Fluid Dynamics, by Clarke, C. and Carswell. B.
For engineering majors,
Textbook: Fundamentals of Aerodynamics, by Anderson, J. D.
For phsyics and astrophysics graduates:
Textbook: Computational Methods for Astrophysical Fluid Flow, by R. J. LeVeque, D. Mihalas, E. A. Dorfi, E. Müller
2. Introduction to Electrodynamics
Textbook: Introduction to Electrodynamics, by Griffiths
3. Thermodynamics
4. Fluid Dynamics
5. Computational Fluid Dynamics