Syllabus
Contents
Syllabus#
Personnel#
Instructor: Prof. Ulissi
Email: zulissi@andrew.cmu.edu
Location: Doherty Hall A207A
TA
Laurens Lueg (llueg@andrew.cmu.edu)
Megan Walsh (mew2@andrew.cmu.edu)
Abilash Subbaraman (abilash@cmu.edu)
Office hours:
Wednesday 1130-1230 (DH2100A Conference Room)
Thursday 530-630 (zoom link)
Friday 330-430 Optional Python Lab (DH1102 Conference Room). See the schedule for what will be discussed.
Additional weekend OH to be announced each week (depends on TA weekend availability)
Course Info#
Lectures: Monday & Wednesday 2:30 – 4:20 pm
Location: Gates 4215
Format: in-person expectation
Textbook: No required textbooks. Resources will be provided.
Prerequisites: 06-262 (Math Methods), 15-110/112
Course Description#
This course will focus on applying numerical methods and machine learning to chemical engineering problems. Students will learn how modern programming environments (on laptops and in the cloud) can run python code. Programming concepts such as defining functions and plotting quantities will be reviewed. Students will learn how to apply and debug numerical integration techniques to systems of ODEs. Solving systems of nonlinear equations and black-box optimization will be covered. Machine learning will be introduced starting with the statistics of linear and non-linear regression with regularization. Polynomial fitting and interpolation will be covered. With this base, students will learn how to apply machine learning techniques such as Gaussian Process regression and neural networks to regression tasks.
Course Objectives:#
By the end of this course you will have learned and be familiar with the concepts of:
numerical linear algebra tools (numpy, arrays, etc)
numerical differential equation tools (scipy solve_ivp, etc)
plotting tools (matplotlib, seaborn, plotly)
data input/output tools for working with structured files (eg pandas)
linear and non-linear regression analyses (including basic uncertainty estimation)
machine learning and statistics packages for making cross-validation splits, etc (scikit-learn)
basic neural network or deep learning model development (pytorch or pytorch lightning)
You will also have developed skills in:
Communication of complex numerical and statistical analyses
Thinking critically about data format and limitations
Featurizing chemical engineering datasets in ways that ML models can understand
Differentiating between competing data-driven models
Debugging and constructing numerical and computational workflows and data analyses
Course format#
This course is in-person expectation (IPE). Attendance will be required and assessed through participation in in-class exercises. We will all do our best to make classes helpful and interactive!
We will have a five minute stretch break at ~2:45 pm each day.
Grading#
50%: Homework (1 lowest grade dropped)
30%: Group project
20%: in-class participation (submission of in-class assignments)
As a trial, for the first two weeks there will be bonus credit for participation. If you notice a typo in the online notes, or think a concept could be described more clearly, or have a helpful link/resource that should be added to understand more about the content, fork the course github (https://github.com/ulissigroup/F22-06-325), make the suggested edit, and open a pull request. Ask the TAs for help doing this at one of the office hours if that’s not clear!
Typo: 1 bonus pt
Helpful link or resource (specific video/slides/etc from another course or content that explains a concept in more detail): 1 pt
Code improvement/clarification: 2 bonus pts If this is helpful and used, I will extend it for the semester and/or edit the bonus points / types.
The course will be graded on the standard scale (90-100 A, 80-90 B, etc.). No curve is expected for this course. Numerical methods and coding is complicated and it will take time to develop the necessary skills, so expect that the homeworks will be challenging. With this system in place you should always know your current grade.
Important Dates#
The schedule should be up to date as we go (Course schedule). If it’s not clear or you think there’s a mistake, please open a github issue for it!
Course Website#
You will need to access our course webpage on Canvas at https://www.cmu.edu/canvas - this is where grades will be posted. Canvas also contains links to the google drive for the course, which will contain the lecture notes, practice exams, etc.
Questions about the lecture or homeworks will be answered on Piazza. There is a link to the course Piazza page in Canvas. This is the most efficient way for you to get questions answered by the instructors and/or the TAs. If you do not receive an answer to your question within three days, please email the instructors/TAs for follow-up.
Summary:
Grades/etc: Canvas
Assignment submission: Gradescope
Notes/homework/etc: Course website and github
Discussions/questions: Piazza
Homework#
TLDR
HW due Mondays at noon
Submit your assignment as a PDF to gradescope
Submit your assignment as ipynb here: https://forms.gle/w1EXMCckbiV7p9cJ7
Homework assignments will be posted on google drive most Mondays and are due one week later on Mondays at noon (uploaded to Gradescope). As all assignments in this course will be in the form of interactive jupyter notebooks, you will submit PDFs of the assignments to gradescope, and the actual ipynb file via google drive. The Software Environments has more info on how to print nicely to PDF.
Late homework will be accepted until Wednesday at noon for 50% credit.
The purpose of homework assignments is to help you practice the material taught in lecture and to build upon it. This means the homework will be more difficult than what is taught in class. It is okay (and encouraged) to discuss an assignment with your classmates, but the written solutions must be your own. This includes assignments that involve software. Copying homework is plagiarism and will receive severe disciplinary action.
A portion of your homework grade will be given for presentation, which will be at the discretion of the grader:
Solutions should be neatly written and clearly organized and uploaded into Gradescope with pages in the correct order.
Plots must be generated using software (such as python/matplotlib).
Figures should have titles, and the axes and any symbols must be clearly labeled.
Code should include helpful variable names, comments as possible. Please use the “format notebook” button to make the code easier to read.
Solutions will be available in google drive after Wednesday at noon. Any issues with grading must be submitted through Gradescope within one week of the return of the homework. If extra points are requested, the homework will be regraded in its entirety. The only exception to this is if there was an error in totaling points.
Group project#
In addition to the weekly homework, you will have a group project due at the end of class to develop your skills in data analysis, exploring predictive models, and communicating your analyses. The project will take the form of a final jupyter notebook and a poster that you will have to present to your peers. Groups of ~4 students will be assigned using CATME based on student strengths and project interests. The details of the group project are in Course Project Overview.
Academic (Dis)honesty#
No copying, no plagiarism, no fraudulence, and no unauthorized assistance. You will receive a grade of zero and will be reported to the university when academic dishonesty takes place. The affected grade will not be dropped in the case of homeworks.
In-class participation#
Attending lectures and asking questions is the best, most efficient use of your time. In-class participation is expected. I know that it can be hard to maintain excitement during remote instruction, but I will try to make it as interactive as possible. Please stop and ask questions if anything is not clear!
Weekly Numerical Methods Help Sessions#
The TAs will hold a weekly help session to provide assistance and additional practice with numerical methods and machine learning packages, as well as software engineering practices. The first session will be scheduled during the second week of class. Attendance at these sessions is not required.
A Note on Self-Care#
This will most likely be your most difficult semester at CMU yet, and you are encouraged to purposely develop time management skills to prevent excessive stress. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress. All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus, and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.
If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website at http://www.cmu.edu/counseling/. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.