ASTRON 98: Introduction to Python For Astronomers (Fall 2025)
Facilitators:
- Brianna Peck (bpeck114@berkeley.edu)
- Pranathi Kolla (pranathik@berkeley.edu)
- Mahum Khan (mahumkhan@berkeley.edu)
- Mira Bhatt (mirabhatt@berkeley.edu)
- Katherine Mora (katherinemora@berkeley.edu)
- Mariam Helal (mariam.helal@berkeley.edu)
- William Lee (williamlee8@berkeley.edu)
- Safia Barmada (sbarmada@berkeley.edu)
Interns:
- Milana Berhe (milana.berhe@berkeley.edu)
- Olivia Silva (olivia_lsilva@berkeley.edu)
Faculty Sponsor:
- Aaron Parsons
Time & Location:
- Mondays & Wednesdays, 4:00-5:00 PM
- 131 Campbell Hall
Office Hours:
- TBD (Posted by Week 2)
Course Number:
- 98
Course Code:
- TBD
Units:
- 2 units, P/NP
Course Description
This course offers an introduction to the Python programming language with a focus on data analysis and research appli- cations in astronomy, physics and other sciences. Emphasis is placed on preparing students for upper-division laboratory courses and research, particularly in astronomy and physics. Key topics include command line, Git version control, code documentation, scripting and Python software development, with additional exploration of advanced techniques such as curve-fitting and object-oriented programming.
This course is designed for students with no prior programming experience. If you are proficient in software development, this class may not be the best fit for you. However, learning the diverse technical material covered in this course will require dedication, patience and practice. As a result, some students—especially those brand new to programming—may find the workload of this course more demanding than other DeCals offered at UC Berkeley.
This is not intended to be an easy course. The experience of learning code varies from person to person, and your effort will directly impact what you gain from the class. The Python DeCal staff are committed to helping you succeed and develop your confidence in the skills you will acquire. We strongly recommend attending all lectures (although attendance is not strictly required as there are asynchronous opportunities), completing all homework assignments, putting significant effort into the Final Project and regularly attending course staff office hours outside of regular lecture time.
Learning Objectives
Students will be introduced to fundamental programming concepts with the goal of building confidence and proficiency in using the Python Programming language for upper-division laboratory work and research applications. In addition to completing weekly homework assignments, students will demonstrate their understanding of software structure and control flow by designing and implementing a Final Project of their choice, culminating in a Final Presentation at the end of the semester. Furthermore, students will learn to manipulate, process, analyze and visualize data using Python and libraries such as NumPy, SciPy, Pandas and Matplotlib.
Course Materials & Resources
Students are expected to bring and use their own computers for this course. If you are unable to do so, please consider utilizing the STEP program, which offers semester-long computer rentals. If the STEP program is not a suitable option, please reach out to course staff so we can help arrange alternate accommodations. Course-related content will be available on our bCourses site. Unless otherwise noted:
- Lecture notes and guides will be posted under the Pages section.
- Homework and starter code will be found in the Files section. Occasionally homework may be posted on our GitHub repository.
- Important updates and reminders will be sent through the Announcements tab and cross-posted on EdStem
EdStem is our main Q&A platform where you can ask questions and receive timely answers from course staff and peers. We highly recommend using EdStem over email, as it enables collaborative learning and quicker response times. For direct communication with course staff, please include [PYTHON DECAL] or [ASTRON 98] in your email sub- ject line to ensure it is properly identified. For logistical or urgent matters, contact Head Instructor Brianna Peck at bpeck114@berkeley.edu.
An optional course text written by former facilitators Imad Pasha and Christopher Agostino is available here. While it covers core Python concepts, it does not include some of the more advanced topics covered in the class. For supplemental review, you may also consult our previous semester’s lecture video on our YouTube channel.
Office Hours
Office hours provide a dedicated space for students to ask questions and collaborate with peers outside of regular class times. We strongly encourage attending office hours weekly and taking the opportunity to connect with the Python DeCal staff, especially at the beginning of the semester. Even if you don’t have any course-related questions, you’re welcome to drop by—we’re happy to offer guidance on selecting or declaring a major, finding research opportunities or exploring summer programs on/off campus.
However, please note that course-related questions will take priority during office hours. As Final Project deadlines approach, office hours tend to get busier, so plan accordingly when seeking assistance. The finalized office hours scheduled will be posted to bCourses by the end of the second week.
Grading Breakdown
- Participation 10%
- Homework 60%
- Final Project 30%
A grade of 70% or above AND an attempt on the final project is required to pass this class.
Attendance & Participation (10% of your grade)
Class meets twice a week. Most weeks will follow a structure of a lecture on Monday to introduce new material, followed by a discussion on Wednesday where you’ll practice applying concepts through hands-on coding exercises. Discussions are collaborative and informal, with course staff available to assist as your work through guided problems. Please bring your laptops to all lectures and discussions so you can follow along and participate actively. However, during warm-ups we may ask you to put away your computers and write your answers on paper.
In addition to regular class meetings, we will have a few dedicated Final Project workdays later in the semester. These sessions are meant to give you time to make progress on your projects, and receive real-time support from the course staff.
If you are unable to attend a class section, recordings of lectures will be uploaded to our YouTube channel and linked on the bCourses homepage. While asynchronous access is available, we strongly encourage attending in person when possible——especially since course content and delivery may change from year to year.
Attendance is not required or tracked. However, we will assign occasional participation assignments throughout the semester to help you stay on track. These are brief tasks (10-30 minutes) and are designed to support your learning——not add to your workload like a full homework assignment.
Homework (60% of your grade)
Homework is assigned weekly and due the following Monday at 11:59 PM on Gradescope via your GitHub repository. Homework will reinforce material from lectures and encourage hands-on exploration of new concepts.
- There is no penalty for late submissions within a 2-week grace period from the original due date. If you need even more time, please reach out for accommodations.
- Homework is graded on effort and accuracy. You’ll earn most of the points as long as you show clear thought and honest attempts——even if your answers aren’t fully correct.
- Collaboration is allowed, but each student must submit their own original work. Avoid direct use of AI- generated answers to preserve your learning experience.
Homework will be assigned weekly, covering topics discussed in lectures. Homework will be released on Tuesdays after class and will be due the following Tuesday at 11:59 PM, unless otherwise specified, giving you a full week to complete it. All homework must be submitted on Gradescope via the GitHub repository you will set up in class. We offer a 2-week grace period for submitting late homework after the original due date, with no penalty applied. If you need additional time beyond this, please contact the course staff to discuss accommodations.
We highly recommend putting an honest effort into homework, as it is graded on both effort and accuracy. Points are primarily deducted based on the level of effort shown. For instance, if your answer is incorrect but demonstrates a solid attempt and understanding, you will receive most of the points. The homework is designed to reinforce your knowledge, as this is a Pass/No Pass course.
You are encourage to collaborate with other students; however, everyone must submit their own individual work. While we encourage resources like Google for research and learning, please refrain from directly inputting homework questions in ChatGPT or other AI tools to generate answers. The goal of this course is to develop your own understanding of the material, and relying too heavily on AI can hinder that learning process. Misuse of AI-generated content will be considered a violation of academic integrity. With great power comes great responsibility.
Final Project (30% of your grade)
The Final Project is your chance to apply the skills you’ve learned throughout the semester in a creative, research-relevant, or data-driven way. Projects may include data analysis, simulations visualization, or exploration of a topic of interest in astronomy or physics using Python.
You may work individually or in pairs (2 students max). Completion of the Final Project——including the final presentation——is mandatory to pass this course.
Timeline and Checkpoints:
- Week 7: You will be assigned a staff mentor to support your project. You must attend at least one office hours of your mentor to complete a check-in assignment before submitting your project proposal to discuss your ideas and get feedback.
- Week 11: Project Proposals will be due. Details and format will be released on bCourses.
- Weeks 12-14: Ongoing second mentor check-ins. You’re expected to check-in at least once more with your mentor during the project development phase. Your mentor is your primary point of contact for support and feedback.
- Week 15: Final Project Presentations! You will give a 1-3 minute presentation (with slides or visual aid) to share your project with the class.
Expectations:
- Projects should demonstrate your understanding of Python coding concepts, especially those covered in class.
- You are encouraged to explore your academic interests, whether through astronomy datasets (e.g. FITS files), simulations, or creative coding applications (like designing a video game). • We will provide example project ideas and offer brainstorming guidance in class and on EdStem.
Academic Misconduct
As with all classes, cheating, plagiarism, and other forms of academic dishonesty will not be tolerated. First violations will result in a zero on the assignment, and any subsequent violations may result in administrative action in accordance with the UC Berkeley Astronomy Department Policy on Academic Misconduct.