John Greiner

Computer Science Lecturer

I am a 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 Master's in Computer Science. I regularly teach

  • COMP 630: Databases (online)

and I am preparing

  • COMP 615: Introduction to Programming for Data Science
  • COMP 621: Systems (online)

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 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
  • O-Week group associate


  • Academic: CS undergrad
  • Academic: CS transfer credit & study abroad
  • Academic: engineering undergrad (Hanszen College)
  • Independent mentoring: CS Ph.D.
2018 NCWIT Aspirations Awards
2015 ICPC World Finals
2016 ICPC World Finals
Phi Beta Kappa initiation