SYLLABUS

This special topics course (COMP484 portion) and senior seminar (COMP490 portion) will allow students to explore issues at the intersection of environmental and computer science. We will use concepts and techniques from computer science to address and understand problems in environmental science. We will explore the application of computational intelligence to environmental data, current solutions to create, collect, store, process, model, and distribute data and information, and the environmental impacts of computers.

We will also discuss how computer science has facilitated technological advancements, connected societies, and improved the livelihood of people, but at the same time, how it has been used as a tool to erode political and economic systems, worsen environmental issues, exploit the working class, target marginalize groups, and erase cultural identities through the assimilation of the individual into the dominant technological power.


Quick Overview of COMP 484/490


Prerequisites COMP 210 (Data Structures). Students must have senior standing to take COMP490.
Instructor Sandino Vargas-Pérez
Upjohn Library Commons, room 232 (ULC232)
(269) 337-7564 (not reachable while Olds/Upton is closed)
Dr. Vargas-Pérez (preferred) | he, him, his
Office Hours:
  • Mondays, Wednesdays, Fridays: 2:45 p.m. to 4:00 p.m.
  • By appointment (check my weekly schedule)
Required Text None. I will provide you the readings as PDF or links to webpages. Books and resources will be identified throughout the quarter and collected in a growing class bibliography on the Teams site for this class.
Microsoft Team Site You can download the app and install it in your system here: MS Teams

Goals and Objectives

This course will have both conceptual and hands-on components. Students will research and present various topics, install and work with real-world projects, and document and reflect on their learning and their project development progress throughout the course.

Seniors taking the course as a senior seminar (COMP490) will play a greater leadership role in the design and execution of the course. See the senior seminar description below.

The objectives of this course are to help you:

  1. Further develop software development skills (programming & teamwork)
  2. Develop familiarity with some of the tools and techniques used in computing for environmental science
  3. Develop and apply professional life-long learning skills. You will:
    • Learn a new realm of programming on your own or in a group using professional resources
    • Research unfamiliar topics and give presentations on them to the class
    • Provide analytical, summary, and reflective statements documenting software development progress and knowledge you have acquired of new topics.

Senior Seminar

Each year the Computer Science department offers a senior seminar focusing on team-based project development within a specific context (e.g., mobile, web, or open source software development). This year we will study the impact, in terms of positve and negative constributions, of computer science to the climate and environmental justice. In addition to collaborating on a specific project, students present material on a wide range of topics, including software engineering methodologies, web development, professional ethics, and current trends in languages and software development tools.

As a senior seminar, the course has a strong problem-solving focus, encourages student participation and leadership, develops their communication skills, and stresses integration of the student's full undergraduate experience.

Student Agency

Students play a very strong leadership role in this class, including presentation of course material, gathering information about the course project(s), influencing the direction and progress of the project(s), and working collaboratively to achieve an outcome.

Presentations

Students present a significant percentage of the material covered in class, on topics such as traditional and agile software development methods, design patterns, database concepts, web-based development languages and tools, version control, testing tools and techniques, open source practices, current trends, and professional ethics. These presentations involve reading, analyzing, synthesizing, and communicating information from books, articles, and online sources representing the (primarily professional) literature of project development in computing and environmental science.

Project

Each year the instructor chooses a topic and one or more possible project ideas. Within the constraints imposed by those initial decisions, student decisions within the class may affect the choice of project, development language, or design methodology, and students always lead the requirements gathering phase and project design for the project implementation.

Communication Skills

Students employ and further develop their communication skills through formal class presentations, working with a community representative to develop project requirements, teamwork throughout the quarter as part of project implementation, presenting weekly oral status reports, developing internal and external documentation for their project, and writing reflective papers on the process of project development, the responsibilities of computer scientists, and the ways in which this course integrated their undergraduate experiences inside and outside the major.

Integration

The project and presentations that make up this course require students to draw on the skills and techniques they have acquired throughout their undergraduate career, not only from courses in the major, but often also from their study of other fields, internships, SIPs, and other outside activities. In addition, the course gives students a structured environment in which to practice and reflect on the critical life-long learning skills on which computer scientists depend, including learning new languages, methodologies, and frameworks. Thus, this course encourages integration of the student’s past, present, and future, applying previous experiences to a current project that models future professional or research environments.


Topics to be Covered

The following are the topics we will be learning about and discussing during COMP 484/490.

  • Tools and Algorithms for Environmental Science:
    • Python and Data Science
    • Visualization Libraries and Geospatial Data
    • REST APIs
    • Use of JSON for Data Distribution
    • HTML and Web Development
    • Computing in JavaScript
    • Version Control with Git and GitHub
    • Interactive and Customized Maps
    • Machine Learning in Ecosystem Informatics and Sustainability
  • Computing for Environmental Justice:
    • The Carbon Footprint of Computing: BitCoin, CO2 Calculator Apps.
    • Environmental Data Collection and Visualization
    • History of Climate Modeling
    • The Cost of Being in the Cloud
    • Programed Obsolescence
    • Social Media and Climate Activism
    • Mining for Hardware Components: Lithium, Tin, Cobalt, and Rare Earth Materials
    • Green Technology and E-Waste
    • Social and Environmental Issues in Computer Science
  • Additional topics as driven by student interest

Activities and Assessments

Students will engage in a number of activities, including research and reading outside of class, presenting concepts in class, providing feedback on others' presentations, participating in class discussions, engaging in projects, and reflecting on one's own progress and growth.

Individual tasks or assignments will be graded on the following scale:

  • Exceeds Expectations 5pts.
  • Meets Expectations 4pts. (A)
  • Near Expectations 3pts. (B)
  • Below Expectations 2pts. (C)
  • Poor Effort 1pt. (D)
  • Not Done 0pts. (F)

Individual grades will be combined and weighted as follows:

  • Topic and concept assessments 10%
  • Individual growth as evidenced through reflections, project contributions & leadership 45%
  • Contributions to the class via presentations, audience reflective responses, class discussions, and more 45%

Details about the format for presentations, reflection entries, discussions, and the final project as well as reading assignments, announcements, links to class presentations, and other material, will be made available on the schedule page or via Teams.


Community Guidelines

The following are a set of guidelines to create an inclusive and supportive learning environment in our class. It was adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan, by Dr. Josephine Mitchell.

Take care of each other

Get to know your classmates and call each other by your preferred names and pronouns.

Be an engaged scholar

Complete the pre-class readings and assignments, be on time to class, and engage with your classmates, professor, and the material in class.

Respectfully contribute to the learning environment

Treat each other with kindness, listen and develop awareness for ideas and opinions that are different from your own, be accountable to each other in discussions and group work, and foster an environment where everyone feels welcome.

Adopt an open mindset

Learning is a process! Strive for intellectual humility. Recognize that we will make mistakes as we learn. Think critically about how your perspectives have been shaped and be open to exploring new ideas and points of view.

Share responsibility for welcoming everyone to participate

If we tend to have a lot to say, make sure we leave space to hear and learn from others. If we tend to be quieter in group discussions, let us challenge ourselves to contribute so others can learn from us.

Challenge the idea, not the person

It is expected that different opinions and perspectives will be shared during discussions. We will be respectful of each other when debating an idea that may differ from our own. Personal attacks, divisive language, etc. will not be tolerated in our class.

Be accountable

We are in control of our learning and will get out of it what we put in. When working in groups, we will respect other group members and push ourselves to contribute to the group in ways that stretch our learning. We will maintain the highest standards of Academic Honesty and give credit to ideas that are not our own.


Attendance and Participation

Since this class will be highly participatory and collaborative, regular attendance and fully engaged participation is crucial to everyone's learning and will weigh heavily in your grade. Please be sure to talk to me in advance if you must miss any class meetings. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. Student presentations in this course will be as important as presentations by the instructor; you should obviously prepare for your own presentations carefully, but you should also attend to your classmates' presentations thoughtfully and actively.

Meeting deadlines will also be very important -- in a collaborative setting such as this class, it is essential that you be ready with presentations and complete software development assignments in a timely fashion. Programming projects, in particular, are time-consuming and difficult to predict, but time-management skills are as critical in industry as they are in college.


Collaboration and the Honor System

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.

Project development: Most of the development (software, research, and so on) in this class will be highly collaborative. Working effectively as a team will be an important component. Your responsibilities under the Honor Code include contributing to the team in all ways, documenting everyone who worked on any piece of code, and acknowledging all help you and your team receive from any source, including books, articles, websites, classmates, your instructor, etc. Discussing group assignments with members of other teams is allowed in this class. I may occasionally ask all the members of a group to evaluate the effort and effectiveness of their own work and that of others in the group; anyone who feels that they are being put at a disadvantage because of lack of engagement of someone else in their group should talk to me about it.

Class presentations should represent your own analysis and synthesis of ideas drawn from one or more sources. Your presentation should indicate clearly the source(s) you used or about which you are reporting. You may work on presentations collaboratively or individually, depending on the topic. Be sure to discuss any proposed collaborations with me in advance.

Individual work: Formal topic/concept assessments, presentation reflective responses, and personal growth reflections will all be individual efforts.