John Greiner

Computer Science Senior Lecturer

I am a Senior Lecturer in Rice's online Master's of Computer Science program. I've taught a wide variety of computer science courses over more than twenty years at Rice. I've been involved with online teaching since 2012. This includes

  • Rice's first MOOC (massive open online course)
  • our department's first online course, and
  • our department's first "flipped" course, combining online videos with in-person active learning.

Current teaching

I am currently focused on our online Master's in Computer Science. I regularly teach

  • COMP 621: Systems
  • COMP 630: Databases

I am also part of the following top-rated Coursera MOOC:

Additionally, much of my academic service has been devoted to the curriculum and advising.

Past teaching

  • COMP 100: Introduction to Computing and Information Systems
  • COMP 130: Elements of Algorithms and Computation
  • COMP 140: Computational Thinking
  • COMP 160: Introduction to Computer Gaming
  • COMP 182: Algorithmic Thinking
  • COMP 200: Elements of Computer Science
  • COMP 210: Principles of Computing & Programming
  • COMP 212: Intermediate Programming
  • COMP 280: The Mathematics of Computation
  • COMP 320: Introduction to Computer Systems
  • COMP 380: Practical Problem-Solving
  • COMP 382: Reasoning about Algorithms
  • COMP 400: Technical Communication in Computer Science
  • COMP 430: Introduction to Database Systems
  • COMP 481: Automata, Formal Languages, & Computability
  • COMP 482 / ELEC 420: Design & Analysis of Algorithms
  • COMP 600: Graduate Research Seminar
  • COMP 607: Automated Program Verification
  • COMP 610: Software Construction
  • COMP 614: Programming for Data Science
  • COMP 621: System Software
  • COMP 630: Databases
  • ELEC 220: Fundamentals of Computer Engineering

I have also been involved with the following courses.

  • COMP 322: Fundamentals of Parallel Programming
  • ENGI 120: Introduction to Engineering Design
  • ENGI 330: Engineering Practicum

Teaching Communication Skills

It is critically important to incorporate communication skills throughout the curriculum. This can take many forms: explaining solutions, project meetings, technical talks, video presentations, research reports, etc. I have used many of these approaches in my courses. At a minimum, all teachers, regardless of discipline, should expect two things of their students. First, students should be able to explain their solutions. Second, any sort of prose answer should be well-written.

Curricular Publishing

For the last decade, few of my courses have had a textbook. Instead, either I or a team has developed original content, often including video-based lectures. As a whole, many Rice CS courses have moved away from using traditional textbooks.

  • Learning to Program as a Social Activity. Joe Warren, Scott Rixner, John Greiner, Stephen Wong. In SIGCSE Technical Symposium, March 2014.
  • TeachLogic
2016 O-Week advising 2016 O-Week advising
O-Week advising
O-Week group 2016 O-Week advising



  • Academic: CS online Master's
  • Academic: Engineering Divisional Advisor (Hanszen College)
  • O-Week group associate


  • Academic: CS undergrad
  • Academic: CS transfer credit & study abroad
  • Independent mentoring: CS Ph.D.

Selected Current & Past Service

NCWIT logo ICPC logo SACS logo Phi Beta Kappa logo Tau Beta Pi logo
2018 NCWIT Aspirations Awards
2015 ICPC World Finals
2016 ICPC World Finals
Phi Beta Kappa initiation