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

Loops: "for"-loops

In this tutorial, students create a program in Java that utilizes the 'for' loop. The program must execute a series of actions, such as finding the product of all integers from 1 to 25, print the average grade for five (5) grade value (from 0 to 4) entries, and one additional loop application (as chosen by the student).

Classes and constructors

In this tutorial, students create a program that implements a class. Using Java, students must edit existing files (included) to create new variables, assign new values, and construct new objects.

If-statements; trivia questions

In this tutorial, students create a quiz. Using conditional statements (if) in Java, students must create a program that accepts user input, evaluates the entry against a specific value, and prints an appropriate output response.

Random numbers

In this tutorial, students create a random number generator. Using Java, students must create a program that prints a random integer, prints the value of a coin toss (H or T), prints a value from a discrete set of float/double values, prints a random lower-case letter, and two additional problems (as identified by the student).

Reading in words; "silly sentences"

In this tutorial, students create an interactive program. Using the Scanner class in Java, students must write a program that accepts user input and then displays a subsequent output.

Final Project: Sketchy

In this project, students incorporate a variety of programming skills to write a program that allows a user to draw images in a Java graphics window. Students, in addition to practicing with graphics, GUI programming and file i/o, are introduced to the stack data structure used to implement an undo/redo functionality.

Addition Circuits

In this lab, students work individually or collaboratively to design several circuits. Using a digital circuit design tool called Logism, students will build an 'adder' - a key component of a modern digital computer. This lab covers three 'adder' subcircuits (MyXOR, full adder, 4-bit ripple carry adder).

Hmmm… Assembly!

In this lab, students learn about programming in assembly language. Using the IDLE programming environment and Python, students must run an assembler and simulator.

Caesar Cipher-Strings, Conditionals, Loops

In this lab students collaborate on the creation of a Caesar cipher in Python. This lab covers the concept of a rotation (Caesar) cipher, including encoding and decoding strings of text. This lab is ideal for students looking to practice working with strings, functions, conditionals, and loops in the context of encryption/decryption.

Conditionals and Selection Statements

In this lab students explore conditionals in Python. Using boolean expressions and conditional logic, students are required to predict the outcome of multiple expressions and then use the Python interpreter to obtain the actual outcome for each statement. Through a series of activities students gradually build programs that demonstrate an understanding of how to use these fundamental constructs in CS. These series of activities are ideal for students looking for more experience with boolean operators and in creating small programs using conditional logic.

Subscribe to Provide Opportunities for Interactions with Faculty