Interacting with faculty and teaching assistants, both in and outside of the classroom, is a powerful way to give students encouragement, to impart tacit professional knowledge, and to help students begin to see themselves as computer scientists. These interactions can take place in class or in lab, during office hours, or in other settings, and are important for sustaining student interest in computing.

Some suggestions

Learn names. Make an effort to learn your students' names and use their names in class and lab, and when you see them outside of class.

Use “we.” Use inclusive terms, such as "we," and informal language to create a sense of a shared community, with you as a member. Try using questions rather than commands to invite participation, e.g., “We know it’s important to test, so how will we do this?”

Advise in class. Take opportunities in your classes to provide career and academic advice to students. You may influence students who weren’t thinking of majoring in computing to consider it.

Mentor undergraduates. Involve undergraduates in research, encourage them to attend conferences and research talks, and provide guidance on finding and navigating internships. Reach out to and encourage women and minority students in all of these things.

Make office hours easy. This can be as simple as making sure all students can find your office and are incentivized to do so. One community college professor ensures students know where her office is by requiring them to sign their name on her door in the first weeks of class.  You might also try holding office hours in places where students tend to hang out, e.g., the student union, a student lounge or lab.

Examples from the collection

Air Quality Index Calculator

In this project, students make a calculator that determines the Air Quality Index (AQI) given user-input sensor data. All calculations follow methods published by the US Environmental Protection Agency (EPA) and give students practice handling user input, rounding/truncating, calculating the max and min, and must handle a a simple calculation that requires either a look-up table or conditionals. This assignment can be given early in the semester to help students gain experience and proficiency with loops, calculating max/min, using conditionals and boolean expressions. 

It can also be used--with some modifications--at many points in the curriculum to explore more complex data structures (2d arrays or dicts), to practice function decomposition, or even object-oriented programming. I have successfully used the assignment twice in one semester, letting students return to the assignment later to see how much simpler the solution becomes when they are able to use functions and complex data structures. See the "redux" files attached here.

Engagement Excellence

Image Processing (Warhol Pop Art Filter)

This is the eighth lab for computational art (CS1) using Processing where students practice creating an Andy Warhol silkscreen image filter. The goals for this lab are:

  1. Practice creating an Andy Warhol silkscreen image filter
  2. Practice using images in Processing
  3. Practice manipulating pixels of an image
  4. Practice using arrays and writing for loops
  5. Practice indexing a 1D ray with 2D coordinates
  6. Practice using boolean logic to control which parts of an image are modified (including implicit circles) 
Engagement Excellence

Resources

Thinking Critically: Classroom Activities to Examine Ethics in Computing

There are many reasons why it is important for students to think about the ethical implications of computer science and the technology that they use and create. At the beginning of the Covid pandemic all teachers faced the sudden transition to necessary remote learning. The fast pivot to online learning required changes to existing lessons, or even creating totally new ones. Shifting to lessons about ethics proved to be a valuable substitution for lesson plans (LP) that required access to resources no longer available to students from home. Presented here are a series of lessons that could be taught in any modality that were adapted for middle and high school learners during the spring of 2020 for their science and AP CS Principles courses. Although the activities and artifacts that are described for students were originally created for online synchronous sessions, they could easily be adapted for face-to-face, online or hybrid classrooms. The subjects of these lessons focused on the ethical impacts of computing by looking at past, present, and emerging technologies.

Two POGIL Activities on Search Concepts and Strategies

These two team-based classroom activities are designed to help students understand key concepts used in artificial intelligence (AI) to search for possible solutions to problems. These activities are designed for use in Process Oriented Guided Inquiry Learning (POGIL), where student teams work during class time with active facilitation by an instructor or TA.

After completing these activities, students should be able to:

  • Define and give examples of key terms, including: action, state, initial state, goal state, goal test, transition function, path, path cost function, state space
  • Define and identify goal state problems and goal path problems.
  • Describe the general structure of search problems, and specific strategies, including: breadth-first, depth-first, depth-limited, random-first, bi-directional, best-first
  • Describe uninformed and informed search.
  • Describe the value of path cost and heuristic functions

ACM Digital Library Entry

Interaction Metrics Projects for Human-Computer Interaction

This Interaction Metrics OER consists of two group projects focused on teaching students how to create validated metrics for measuring human-computer interactions. If we want to measure how good a team is at teamwork, we might count communication utterances by members and see if they’re equally distributed. But is that measure predictive of team success? Probably not. If we want to measure how much a person likes an app, we might count number of uses per day or number of taps per usage session. While these metrics are countable, there’re not accurate predictors of fondness for an app. These two projects ask students to create objective, useful metrics for real-world human-technology interactions and to validate them with predictive models and collected data. I tell students these projects are about “developing metrics for things that are hard to measure” and ask them to consider whether the proliferation of inexpensive sensors, AI, and IoT might make fuzzy constructs like “team trust” or being a “good leader” more measurable.

Usability Testing Plan Template: A flexible tool for planning and teaching usability evaluation

Usability testing is a key research method in human-computer
interaction (HCI). When students are designing for others, usability
testing is an opportunity to learn how the design is currently
working and how it can be improved. This usability testing plan
template gives individual students or teams a structure to help plan,
conduct, and analyze data from a study. The template walks
students through the process of planning a study through a series of
questions and planning materials. The template is especially helpful
for students new to usability testing and can be adapted and
adjusted as needed.

ACM Digital Library Entry

Introduction to Java

This classroom activity uses Process Oriented Guided Inquiry Learning (POGIL) to introduce students to Java. Students work in small teams to answer a series of questions about variables and assignment. The instructor facilitates interaction among teams, offers guidance and encouragement, and summarizes key concepts.

Learning Objectives:
* Identify components of the "hello world" program.
* Write Java code to declare int and double variables.
* Explain what it means to assign a value to a variable.
* Leverage the prior knowledge and experience of others.

Conditions and Logic - Python

This classroom activity uses Process Oriented Guided Inquiry Learning (POGIL) to introduce students to Python. Students work in small teams to answer a series of questions. They run examples in a Python Shell and discuss the results. The instructor facilitates interaction among teams, offers guidance and encouragement, and summarizes key concepts.

Learning Objectives:
* Evaluate boolean expressions with comparison operators (<, >, <=, >=, ==, !=).
* Explain the syntax and meaning of if/else statements and indented blocks.
* Evaluate boolean expressions that involve comparisons with and, or, and not.
* Evaluate complex logic expressions based on operator precedence.

Introduction to Python

This classroom activity uses Process Oriented Guided Inquiry Learning (POGIL) to introduce students to Python. Students work in small teams to answer a series of questions. They run examples in a Python Shell and discuss the results. The instructor facilitates interaction among teams, offers guidance and encouragement, and summarizes key concepts.

Learning Objectives:
* Describe differences between program and output text.
* Identify and execute Python functions for input/output.
* Write assignment statements and use assigned variables.
* Leverage the prior knowledge and experience of others.

Air Quality Index Calculator

In this project, students make a calculator that determines the Air Quality Index (AQI) given user-input sensor data. All calculations follow methods published by the US Environmental Protection Agency (EPA) and give students practice handling user input, rounding/truncating, calculating the max and min, and must handle a a simple calculation that requires either a look-up table or conditionals. This assignment can be given early in the semester to help students gain experience and proficiency with loops, calculating max/min, using conditionals and boolean expressions. 

It can also be used--with some modifications--at many points in the curriculum to explore more complex data structures (2d arrays or dicts), to practice function decomposition, or even object-oriented programming. I have successfully used the assignment twice in one semester, letting students return to the assignment later to see how much simpler the solution becomes when they are able to use functions and complex data structures. See the "redux" files attached here.

Engagement Excellence

CS2 Syllabus

The CS2 course introduces object-oriented programming, data structures, and more sophisticated algorithms than in CS 171 (Computer Science I) which is a prerequisite for this course. You are not expected to have any prior experience with Java. In terms of the ACM’s Computer Science Curriculum 2013, this course addresses the following knowledge areas: • Algorithms and Complexity (AL) • Discrete Structures (DS) • Programming Languages (PL) • Software Development Fundamentals (SDF) • Software Engineering (SE)

This course is a required intro-level course for two of the three Lewis & Clark CS departmental majors: Computer Science and Computer Science and Mathematics.

POGIL: Internet III - Addresses

This is a team-based classroom activity designed for Process-Oriented Guided Inquiry Learning (POGIL). Teams of 3-4 students work together to learn about how addresses on the internet works by comparing the IP addresses on the internet to SSNs for people and domain names to postal addresses and more. This is part three of a three-part series on POGIL Internet. Click to review the preceding lessons (Internet I, Internet II)

The attached files are the student versions of Internet III. Please contact the author (Clif Kussmaul, clif@kussmaul.org) for teacher versions with solutions and additional information. Also see instructor information in the activity.

Engagement Excellence
Subscribe to Provide Opportunities for Interactions with Faculty