John Greiner

Computer Science Lecturer

I am a Lecturer in Rice's online Master's of Computer Science program. I will be teaching Databases when this program begins in Fall 2019. We're looking forward to working with our first cohort of students.

During 20+ years at Rice, I've taught a wide variety of computer science courses. I've been involved with This includes Rice's first MOOC (massive open online course), our department's first online course, and our department's first "flipped" course.

Current teaching

I am currently focused on our online Master's in Computer Science. Starting Fall 2019, I will be teaching

  • 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
  • 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
  • Transfer credit & study abroad: CS undergrad
  • First Year mentor / O-Week group associate


  • Academic: CS undergrad
  • 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