Skip to article frontmatterSkip to article content

Welcome to the course

EAE 493 / 593: Computer Programming for the Geosciences (Fall 2025)

Basic Course Information

  • Day/time of course meetings: Monday and Wednesday, 12:30 – 1:45 p.m.
  • Location: Davis Hall 121
  • Academic credit: 3
  • Course format: Lecture and Lab

Instructor’s Information

Dr. Alex Haberlie, Assistant Professor

  • 815-753-0631
  • ahaberlie1@niu.edu (Best way to reach me)
  • Virtual Office Hours: M & W – 2:30 to 4:30 p.m.
  • Physical Office Hours: M & W – 2:30 to 4:30 p.m.
  • Physical Office Location: Davis Hall 212

What is this course about?

Introductory programming techniques used to process and visualize geospatial data. Programming in Python, basic program logic and control structures, integration of Python with open-source scientific programming libraries, and 2-D and 3-D visualization of geospatial data. To get you all “in the zone”, the “old school” font used in this syllabus is the classic programming language font “courier new”. I hope it brings you good luck this semester.


What background knowledge do I need before taking this course?

Prior programming experience is preferred but not required. It would be useful if you knew the basics of file systems on computers and where files “live” in directories and how that is communicated to the user. Unfortunately, tablets, phones, and the cloud have made finding specific file locations hard to find. We will explore this topic in detail, as it is extremely important for geoscience data analysis.

In addition, you should come to the course with a general geoscience interest area (climate, meteorology, geology, etc.). Applying your programming skills to an area that you are passionate about makes it so much easier to learn how to program. You will be much more motivated to create a program that produces a relevant tool for your area of interest, like a Skew-T diagram, an annual temperature range, or a seismograph time series.


What will I learn in this course?

  1. Demonstrate a basic understanding of computer hardware and software
  2. Explain the importance of ethics in computing
  3. Demonstrate problem solving skills
  4. Develop the ability to debug programs and find relevant documentation materials
  5. Apply best practices for software development, including formatting rules, documentation, and testing
  6. Explain the basic concepts of the Python programming language, including data types and control structures
  7. Practice software development using popular open-source tools
  8. Analyze Geoscience datasets and interpret and synthesize the results

What will I do in this course?

This course will meet in person twice a week for lecture and guided laboratory sessions. In addition, you will complete programming assignments, quizzes, and exams throughout the semester to assess your understanding of the material. You will apply your accumulated knowledge on a final project. Students taking this course should be proficient in general computer usage, including an understanding of the directory structure of their operating system. We will be using command line interfaces and relative directory paths, so an understanding of “where files live” on your computer will be very helpful. We will be using Google Colab as our Python environment. Any computer that can open a web browser can connect to Colab, access the assignments, and run Python programs. I would recommend bringing your own laptop to class to follow along with examples.

While the course title says “Geosciences”, my background is in climate science. I use climate datasets and concepts to demonstrate basic programming principles. I recognize that being passionate about an assignment, exercise, etc., is extremely important in an introductory class. So, if you have a dataset that is outside of climate science and you think it would be appropriate to examine during this course, please share it with me and we will talk about it in class.


How can I succeed in this course?

“I’m just not good with computers”: Contrary to what you might think, no one is born with the ability to program. As with any skill, it takes time and effort to learn. At the end of the day, if you can follow directions on how to bake a cake, or how to put together a piece of complicated furniture you had delivered, you can learn how to program! My computer programming adventure started in middle school and continued formally for four years during my computer science undergraduate degree. The learning process was not simple for me! It took years of practice, both in class and on my own, to become a proficient programmer—and I am still not done learning! My advice to you is to treat this course like you would a hobby about which you are passionate. From running, to cooking, to making model airplanes, or even collecting cards, it is likely you are constantly seeking material to try to become better and more efficient at your hobby. Books, Google, YouTube, or even social media apps can be resources to seek out to learn something new about programming. If you are lucky, you may experience an “Ah-Ha!” moment while you are there. To succeed in this course and beyond, you must put forth your maximum effort for as much time as possible. You should enjoy the challenge of learning something that is hard for many but can be so rewarding for your career.


What required texts, materials, and technologies will I need?

All of the material you need will be provided to you in PowerPoints, Jupyter Notebooks, and other resources. That said, the following resources will be extremely beneficial:

Python Programming and Visualization for Scientists, 2nd Edition by DeCaria

Automate the Boring Stuff with Python by Sweigart (https://automatetheboringstuff.com/)

Online Textbook (Alpha Test): Course Notes, Examples, and other materials

I will allow and encourage the use of laptops or tablets in class to take notes and to complete in-class activities. However, if their use is distracting to other students or the instructor, I will revoke that privilege for individuals or the entire class. You will not be allowed to use a laptop, tablet, or any other device on quizzes or exams. Please let me know if you do not have access to a laptop or tablet. It does not have to be powerful! It just needs to be able to open a website.
You need to create an account for Google Colab. Students get free access to “Colab Pro”, which requires you to verify your email.


How will my grade be determined?

Your course grade is based on the following (600 points):

Exercises (50 points)- Apply what you learn to a specific and limited problem (5 pts each)

Quizzes (50 points) - Assess how well you understand a subset of recent class concepts (10 pts each)

Assignments (50 points)- Apply what you learn to problems that combine two or more techniques (10 pts each)

Exams (300 points) – Assess how well you understand general class concepts and your ability to connect multiple concepts to solve problems (100 pts each)

Participation (50 points) – Periodic individual and group activities that reinforce the lecture topic that day (5 points each).

Term Project (100 points) – Combine several course concepts to solve a geoscience problem and present your data, methods, and results at the end of the semester.

Graduate students will be given extra questions and/or extra requirements.

Quizzes, exams, and participation take place in the lecture room. Bring a pencil to quizzes and exams.

End-of-the-course grading procedures will follow the standard guidelines (>= is greater than or equal in Python):

A: >= 92.5 percent (Grade Symbol: A)

A-minus: >= 89.5 percent (Grade Symbol: A-)

B-plus: >= 86.5 percent (Grade Symbol: B+)

B: >= 82.5 percent (Grade Symbol: B)

B-minus: >= 79.5 percent (Grade Symbol: B-)

C-plus: >= 76.5 percent (Grade Symbol: C+)

C: >= 69.5 percent (Grade Symbol: C)

D: >= 59.5 percent (Grade Symbol: D)

F: < 59.5 percent (Grade Symbol: F)

Please resolve any grade disagreements and report any discrepancies via email to the instructor by December 5th, 2025


What are the course policies?

Please follow these guidelines when completing work for this course or interacting with me or fellow classmates. Any violation of these policies could result in consequences commensurate with the severity of the violation.

Programming Course Grading Quirks:

I will be grading your work based on correctness and how well you follow directions. Some of the grading is automated, but I will review the results if needed and make common sense corrections. However, these choices are not to be mean or unfair, they are to help you succeed in your future jobs. As a computer science student in the late aughts, I was frustrated by these requirements. But, eventually, you see why they are important. You might just have to trust me (for now). Example 1: Produce the following output, exactly: “The temperature was 14.22 F and the dewpoint was 8.6 F” You would lose points if you had extra or missing spaces, incorrect decimal precision, incorrect upper/lowercase, misspellings, or anything that does not match the example provided. Example 2: If I ask you to define a variable named “a” in two subsequent problems, make sure that you define the variable for each problem in your answers. I want you to practice variable assignment, particularly in the first few exercises and assignments. Thus, we will go through all the steps explicitly (at first), and I will grade you on completeness.

Make-up Exams / Quizzes:

There will be NO makeup exams / quizzes except in 1) in the event of extremely exceptional circumstance, 2) a written excuse (from doctor, lawyer, etc.) is provided, and 3) that I am notified about the circumstance within 24 hours of the missed test (preferably before the exam). All three of these conditions must be met for you to be eligible for a make-up allowance. The make-up test will be harder than the actual test provided during the regular testing period and/or will contain essay questions. If the conditions are met for a make-up test, the test must be completed within 48 hours of the missed activity or within 48 hours after the exceptional circumstance based on the official documentation. Please note undocumented excuses will not be tolerated. Bottom line: I expect you to be responsible adults and do not miss a test. There will be no make-up exam 4. Please see the NIU Incomplete Policy link on Blackboard. If you know you will miss the exam due to unusual circumstances and want to take the exam before the scheduled date, please email me your request at least 2 weeks before you would like to take the exam. For example, if you have to miss an exam on 7/30 and you want to take the exam on 7/28, you will need to send your request by 7/14. You can only take the exam up to 1 week ahead of time. I reserve the right to deny the request.

Late Exercises / Assignments / Milestones:

Unless otherwise specified, there will be a 10% reduction on your grade for each day the assignment is not submitted after the due date. For example, if the assignment is due on January 1st and you turn it in at any time on January 2nd, you will receive a 10% reduction. After 5 days, the assignment will no longer be accepted. The Make-up Exam policy will be used to determine if a point reduction should be applied or if the 5-day maximum should be waived.

Communications

All announcements will be sent out on Blackboard and/or discussed during the lecture period. You should check your email and Blackboard daily to stay on top of course communications. I typically respond to emails quickly, but you should allow at least 24 hours for me to respond. All due dates, meeting times, etc., are communicated in the current central time. I usually provide more detail and answer questions about course topics during the lecture, so some helpful details might not be included in the announcements. Discussion Guidelines

Civility is an essential ingredient for academic discourse. All communications for this course should be conducted constructively, civilly, and respectfully. Differences in beliefs, opinions, and approaches are to be expected. Please bring any communication you believe to be in violation of this class policy to the attention of your instructor. Active interaction with peers and your instructor is essential to success in this course, paying particular attention to the following:

  • Be respectful of others and their opinions, valuing diversity in backgrounds, abilities, and experiences.
  • Challenging the ideas held by others is an integral aspect of critical thinking and the academic process. Please word your responses carefully and recognize that others are expected to challenge your ideas. A positive atmosphere of healthy debate is encouraged.

Academic Accommodations

If you need an accommodation for this class, please contact the Disability Resource Center as soon as possible. The DRC coordinates accommodations for students with disabilities. It is located in the Campus Life Building, Suite 180, and can be reached at 815-753-1303 or drc@niu.edu.

Also, please contact me privately as soon as possible so we can discuss your accommodations. Please note that you will not be required to disclose your disability, only your accommodations. The sooner you let me know your needs, the sooner I can assist you in achieving your learning goals in this course.

Academic Integrity

Good academic work must be based on honesty. The attempt of any student to present as his or her own work that which he or she has not produced is regarded by the faculty and administration as a serious offense. Students are considered to have cheated if they copy the work of another during an examination or turn in a paper or an assignment written, in whole or in part, by someone else (this includes computer code). Students are guilty of plagiarism, intentional or not, if they copy material from books, magazines, or other sources without identifying and acknowledging those sources or if they paraphrase ideas from such sources without acknowledging them. Students guilty of, or assisting others in, either cheating or plagiarism on an assignment, quiz, or examination may receive a grade of F for the course involved and may be suspended or dismissed from the university.

Treat a computer program assignment like a term paper—do not copy other people’s work! Copying code can and will be dealt with as harshly as copying a paper from a fellow student and handing it in as your own. It is usually obvious to me when people copy programs, even if it doesn’t seem obvious to you. Instead of copying, ask me for help early and often! I am able to monitor the progress of your work. Suspicious changes, like copying and pasting an entire code block, will be investigated.

Artificial Intelligence (AI) Use Statement

The use of generative AI tools (e.g. ChatGPT, Dall-e, etc.) is permitted only for certain, limited situations. If there is suspicion of a student using generative AI to complete an entire assignment, that student will be required to explain their assignment solution to me in my office. If you are unable to explain your code, you will receive a 0 for the assignment. Because of the pervasive issues associated with generative AI, you can only use the Python approaches we discuss in class. I will provide details on a case-by-case basis. For example, I may ask you to only use while loops and not for loops.

You may use generative AI tools, but only for the following activities: Brainstorming and refining your ideas; Asking about an error message; Asking why your code is not giving you the correct output; Asking about expanding an assignment beyond the requirements; Fine-tuning your research questions; Finding information on your topic; Drafting an outline to organize your thoughts; and Checking grammar and style.

The use of generative AI tools is not permitted in this course for the following activities related to your term paper: Impersonating you in classroom contexts, such as by using the tool to compose discussion board prompts assigned to you or content that you put into a Zoom chat. Completing group work that your group has assigned to you, unless it is mutually agreed upon that you may utilize the tool. Writing a draft of a writing assignment. Writing entire sentences, paragraphs or papers to complete class assignments.

You are responsible for the information you submit based on an AI query (for instance, that it does not violate intellectual property laws, or contain misinformation or unethical content). Your use of AI tools must be properly documented and cited in order to stay within university policies on academic honesty. Any assignment that is found to have used generative AI tools in unauthorized ways will receive a zero. When in doubt about permitted usage, please ask for clarification.

NOTE: the response from an AI may be copied verbatim from another source without your knowledge and without a reference. If you knowingly or unknowingly include these responses in your work, you may be in violation of the Academic Integrity Statement above.

Inclusivity

This course intends to ensure fairness and equity for all those that enroll. NIU is committed to providing every student with a safe, respectful experience conducive to learning. If something is disrupting your learning experience, please talk to the instructor as soon as you are able.

What university resources can help me during this course?

Huskie Academic Success Center

Counseling and Consultation Services

Health Services

Career Services

Technology Labs


What is the expected course schedule?

Any changes to the following schedule will be announced on Blackboard.

On a typical week, we will have a lecture on Monday followed by instructor-led examples on Wednesday. This could change if we get ahead or behind schedule.

Quizzes will be held on Wednesdays after Lab sessions (any changes will be announced).

Exams will be held on Wednesdays (in person) for the duration of the class.

Week 1: August 25th, 2025 and August 27th, 2025

Week 2: September 3rd, 2025 (No Class on Monday for Labor Day)

  • Class topic/unit name: Python Syntax
  • Laboratory: Python ground rules
  • Exercise due: EX1

Week 3: September 8th, 2025 and September 10th, 2025

Week 4: September 15th, 2025 and September 17th, 2025

  • Class topic/unit name: Conditionals and If Statements
  • Laboratory: Air Conditions
  • Exercise due: EX3

Week 5: September 22nd, 2025 (No Class on Wednesday – Unidata)

  • Class topic/unit name: If Elif Else Statements
  • Laboratory: None
  • Exercise due: EX4
  • Assignment Due: HW1

Week 6: September 29th, 2025 and October 1st, 2025

  • Class topic/unit name: Match statements, Review, and Quiz 2
  • Laboratory: None
  • Exercise due: None
  • Exam 1: Syntax, Data Types, Conditionals, and If Statements

Week 7: October 6th, 2025 and October 8th, 2025

  • Class topic/unit name: Loops
  • Laboratory: Groundhog’s Day
  • Exercise due: EX5
  • Assignment due: HW2

Week 8: October 13th, 2025 and October 15th, 2025

  • Class topic/unit name: Iterators
  • Laboratory: Data factory and Quiz 3
  • Exercise due: EX6

Week 9: October 20th, 2025 and October 22nd, 2025

  • Class topic/unit name: Functions
  • Laboratory: Refactoring
  • Exercise due: EX7
  • Assignment due: HW3

Week 10: October 27th, 2025 and October 29th, 2025

  • Class topic/unit name: Numpy
  • Laboratory: Scary-fast numpy calculations and Quiz 4
  • Exercise due: EX8

Week 11: November 3rd, 2025 and November 5th, 2025

  • Class topic/unit name: Numpy
  • Laboratory: None
  • Exercise due: EX9
  • Exam 2: Loops, Iterators, and Functions

Week 12: November 10th, 2025 and November 12th, 2025

  • Class topic/unit name: Matplotlib Introduction
  • Laboratory: Data visualization and Quiz 5
  • Exercise due: EX10
  • Assignment due: HW4

Week 13: November 17th, 2025 and November 19th, 2025

  • Class topic/unit name: Matplotlib Analysis
  • Laboratory: Telling a story with data
  • Exercise due: EX11
  • Assignment due: HW5

Week 14: November 24th, 2025 (No Class on Wednesday - Thanksgiving)

  • Class topic/unit name: Pandas Introduction
  • Laboratory: None
  • Exercise due: EX12

Week 15: December 1st, 2025 and December 3rd, 2025

  • Class topic/unit name: Pandas Statistics
  • Laboratory: Presentations
  • Exercise due: EX13

Final Exam: December 8th, 2025 from 12:00 to 1:50 p.m.

  • Exam 3: Matplotlib, Pandas

This syllabus is a guide and every attempt is made to provide an accurate overview of the course and its requirements. However, certain circumstances may make it necessary for me to modify the syllabus during the semester for your benefit and the changes may depend, in part, on course progress and our needs. I will announce any change to the syllabus as early as possible so that you can adjust your schedule. The department/ school will also be notified of any change.