Teaching

My goal is to implore students to intellectually challenge themselves. — Source/Joslenne Pena

The greatest barrier present in the field of Computing and Information Science is underrepresentation of minorities and their engagement and retention within the field. In addition, Hispanic and African American students have also struggled to maintain interest. Overall students become discouraged for a variety of reasons such as: (1) defensive climate within classrooms, (2) lack of support from peers and faculty (3) scarcity in mentorship and role models from people with similar backgrounds (4) teaching approach and pedagogy. Thus, my goal is to find ways to evoke creativity, exploration, and tinkering in my classroom. To achieve this, I move toward hands-on activities and project-based approaches that force students to act in order to learn.

I have been fortunate enough throughout my career in academia to build a wealth of teaching experience through various opportunities spanning formal and informal courses, workshops, and modules. I believe these opportunities have fostered extreme growth in my abilities, techniques, approaches, and philosophy.

For more on my pedagogical approach, see my Teaching Philosophy.

Courses Taught or Assisted

show all

Macalester College

This course introduces the field of computer science, including central concepts such as the design and implementation of algorithms and programs, testing and analyzing programs, the representation of information within the computer, and the role of abstraction and metaphor in computer science. The exploration of these central ideas will draw examples from a range of application areas including multimedia processing, turtle graphics, and text processing. Course work will use the Python programming language.
What happens as software grows in complexity? How do we break a program into manageable pieces? How do we write readable, maintainable code? This course is an introduction to the building blocks of software design: abstraction, decomposition, and encapsulation. Using object-oriented programming in Java, we will create graphics, games, and simulations, and explore natural language processing. Topics may include: classes, objects, polymorphism, inheritance, testing, refactoring, events, closures, streams, immutability, parallel programming, and version control. The course culminates in a student-designed project.
This course explores the diversity, equity, and inclusion (DEI) obstacles in computing through an introduction to and analysis of social justice as a construct, its impact on computing entities, and the resulting effect of technology on various identities. The course will examine how technologies continue to reinforce and heighten injustices through critical analysis of several concepts. Should these technologies be redesigned? Or tossed out altogether? Students will engage in class discussions through scenarios and/or case studies. Students will engage in design thinking and programming activities. Semester culminates with a group-based project. Familiarity with a programming language is recommended. Background in social science courses recommended.
What happens as software grows in complexity? How do we break a program into manageable pieces? How do we write readable, maintainable code? This course is an introduction to the building blocks of software design: abstraction, decomposition, and encapsulation. Using object-oriented programming in Java, we will create graphics, games, and simulations, and explore natural language processing. Topics may include: classes, objects, polymorphism, inheritance, testing, refactoring, events, closures, streams, immutability, parallel programming, and version control. The course culminates in a student-designed project.
This course introduces technologies for building dynamic web applications. It will look at all stages in the web application design process, including: 1) the basic protocols and technologies underlying the web (e.g. HTTP, REST), 2) front-end web technologies, such as HTML, CSS, and Javascript, 3) and application servers that manage requests for information, update data, etc. The course will be programming-intensive, with students using web frameworks to design and implement Internet applications. The format of the course will be mainly laboratory-based sessions, where students learn components of a web application, supported by lectures and discussions. Students will research particular topics and present their findings during these discussion sessions. The course will also investigate the usability of designs from a human factors standpoint and discuss privacy and other social consequences of this technology. This course counts as the capstone.
What happens as software grows in complexity? How do we break a program into manageable pieces? How do we write readable, maintainable code? This course is an introduction to the building blocks of software design: abstraction, decomposition, and encapsulation. Using object-oriented programming in Java, we will create graphics, games, and simulations, and explore natural language processing. Topics may include: classes, objects, polymorphism, inheritance, testing, refactoring, events, closures, streams, immutability, parallel programming, and version control. The course culminates in a student-designed project.
What happens as software grows in complexity? How do we break a program into manageable pieces? How do we write readable, maintainable code? This course is an introduction to the building blocks of software design: abstraction, decomposition, and encapsulation. Using object-oriented programming in Java, we will create graphics, games, and simulations, and explore natural language processing. Topics may include: classes, objects, polymorphism, inheritance, testing, refactoring, events, closures, streams, immutability, parallel programming, and version control. The course culminates in a student-designed project.
This course introduces the field of computer science, including central concepts such as the design and implementation of algorithms and programs, testing and analyzing programs, the representation of information within the computer, and the role of abstraction and metaphor in computer science. The exploration of these central ideas will draw examples from a range of application areas including multimedia processing, turtle graphics, and text processing. Course work will use the Python programming language.

Minneapolis College of Art and Design

This course introduces the fundamental language of the web: HyperText Markup Language (HTML). Explore how the web works, tags, links, images, lists, tables, forms, web standards (old, new, and evolving), directory structure, wireframing, web development best practices, and lay the foundation for further web development in the next course, Web Development Basics: CSS. This five week online course is a blend of tutorials, readings, development projects, and online discussion. The class is geared toward the beginning to intermediate web developer or designer.
This is the second course in the Web Development Basics series. In this course, build on your understanding of HTML, and use Cascading Style Sheets (CSS) to create well crafted web pages. Topics include: CSS selectors and properties, fonts and typographic treatment, colors, divs and spans, floats, layout, and positioning. This five week online course is a blend of tutorials, readings, development projects, and online discussion. The class is geared toward the beginning to intermediate web developer or designer. Open to students ages 18 and above.

The Pennsylvania State University - Main Campus (graduate teaching assistant)

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Enim eum, facilis, natus commodi numquam ut sed, maxime laborum veritatis suscipit fugiat optio hic? Quod quaerat quidem autem, possimus error, dolore, nemo eaque animi, eligendi ratione inventore odit itaque eos dolorum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore blanditiis eveniet nostrum perspiciatis aspernatur reiciendis deserunt esse. Molestiae quas sint debitis aliquam nulla doloremque dolorum praesentium. Voluptate assumenda neque officia nihil illum vel, at ea voluptatum ducimus quibusdam, magnam illo.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore blanditiis eveniet nostrum perspiciatis aspernatur reiciendis deserunt esse. Molestiae quas sint debitis aliquam nulla doloremque dolorum praesentium. Voluptate assumenda neque officia nihil illum vel, at ea voluptatum ducimus quibusdam, magnam illo.
This is the senior capstone, consectetur adipisicing elit. Dolore blanditiis eveniet nostrum perspiciatis aspernatur reiciendis deserunt esse. Molestiae quas sint debitis aliquam nulla doloremque dolorum praesentium. Voluptate assumenda neque officia nihil illum vel, at ea voluptatum ducimus quibusdam, magnam illo.