Dr. Mark C. Lewis

Google+, YouTube, Facebook, Twitter, Blog, Klout

Introduction to the Art of Programming using Scala (Book Website, Amazon, CRC Press)

This image is the result of what can happen when a professor gets too involved in a CS1 assignment. As it happens, the program to render this image is only about 500 lines of C code and it includes both reflections and transparency through recursion.


Blog: At the urging of a former student I started a blog.

Ring Dynamics Simulations: I keep this page updated with the different projects that I am doing on planetary ring dynamics. It has lots of pretty pictures and movies showing animations of the simulation work that I do.

SwiftVis: For several years I have been working with Hal Levison, David Kaufmann, and some others to produce a new version of the Swift solar dynamics simulator. A major part of my contribution has been the visualization and analysis package. See the full documentation for SwiftVis here.

News: Trinity hosts a programming competition for local High School students in Spring. Get all the information here.


Welcome to my home page. If you are taking one of my classes, look below for links to the classes that I am teaching or have recently taught.

I'm a Professor in the Department of Computer Science at Trinity University. I teach a number of different courses in the department here at Trinity spanning from first semester introductory courses to advanced seminars. I also have research interests in a number of different areas including simulations and modeling and programming languages. My most active research is in numerical modeling of rings around planets with nearby moons. Go to my research link below for research work I've done with students.

I'm also the coach for Trinity's ACM programming teams. I like to compete myself and try to do TopCoder when I can. If you are a student who might want to be on the programming team, talk to me to find out when our meetings are.

Trinity Courses

Fall 2014
CSCI1320 - Principles of Computer Science I
CSCI1321 - Principles of Computer Science II
CSCI2195 - Competitive Programming
CSCI2320 - Data Abstraction

Spring 2014
CSCI1320 - Principles of Computer Science I
CSCI2195 - Competitive Programming
CSCI3322 - Principles of Algorithms
PHED1146 - Roller Skating I
PHED1147 - Roller Skating II

Fall 13
CSCI1320 - Principles of Computer Science I
CSCI1321 - Principles of Computer Science II
CSCI2195 - Competitive Programming
CSCI2320 - Data Abstraction

Spring 13
CSCI1321 - Principles of Computer Science II
CSCI3322 - Advanced Algorithms
CSCI3194 - Competitive Programming
PHED1137 - Roller Skating

Fall 12
CSCI1320 - Principles of Computer Science I
CSCI1321 - Principles of Computer Science II
CSCI2322 - Principles of Functional Programming
CSCI3194 - Competitive Programming

Spring 12
CSCI1320 - Principles of Programming I
CSCI1321 - Principles of Programming II
CSCI3194 - Competitive Programming
PHED1137 - Roller Skating

Fall 11
CSCI1320 - Principles of Programming I
CSCI1321 - Principles of Programming II
CSCI3345 - Web App Design

Spring 11
CSCI1320 - Principles of Algorithm Design I
CSCI1321 - Principles of Algorithm Design II
CSCI3352 - Simulation Theory
PHED1137 - Roller Skating

Fall 10
CSCI1311 - Introduction to Programming Logic
CSCI1320 - Principles of Algorithm Design I
CSCI3190 - Programming Team
CSCI3394 - Next-Generation Programming Languages

Spring 10
CSCI1311 - Introduction to Programming Logic
CSCI1321 - Principles of Algorithm Design II
CSCI2323 - Scientific Computing
PHED1137 - Roller Skating

Fall 09
CSCI1311 - Introduction to Programming Logic
CSCI3190 - Programming Team
CSCI3394 - Effective Object-Oriented Programming
PHYS1304 - Solar System Astronomy

Spring 09
CSCI1311 - Introduction to Programming Logic
CSCI1321 - Principles of Algorithm Design II
CSCI3352 - Simulation Theory
CSCI3394 - Game Design Seminar
PHED1137 - Roller Skating

Fall 08
Sabbatical

Spring 08
CSCI1311 - Introduction to Programming Logic
CSCI1321 - Principles of Algorithm Design II
CSCI2194 - Professional Ethics and Design Seminar
CSCI2323 - Scientific Computation
PHED1137 - Roller Skating

Fall 07
CSCI1311 - Introduction to Programming Logic
CSCI1320 - Principles of Algorithm Design I
CSCI3394 - Effective Object-Oriented Programming
CSCI3190 - Algorithmic Problem Solving

Spring 07
CSCI1321 - Principles of Algorithm Design II
CSCI2194 - Professional Ethics and Design Seminar
PHED1137 - Roller Skating

Fall 06
CSCI1320 - Principles of Algorithm Design I
CSCI2323 - Scientific Computation
CSCI3394 - Emergence, Thought, and Complexity

Spring 06
CSCI1321 - Principles of Algorithm Design II
CSCI3390 - Independent Study on Game Design
CSCI3394 - Advanced Algorithms

Fall 05
CSCI2323 - Scientific Computation
CSCI3394- Effective OO Programming
PHYS1304 - Solar System Astronomy

Spring 05
CSCI1321 - Principles of Algorithm Design II
CSCI2194 - Professional Ethics and Design Seminar
CSCI3352 - Simulation Theory

Fall 04
CSCI1321 - Principles of Algorithm Design II
CSCI2322 - Principles of Functional Programming
CSCI3368 - Principles of Programming Languages

Spring 04
CSCI1321 - Principles of Algorithm Design II
CSCI2194 - Professional Ethics and Design Seminar
CSCI3294 - Effective OO Programming

Fall 03
CSCI1320 - Principles of Algorithm Design I
CSCI2320 - Principles of Data Abstraction

Spring 03
CSCI1321 - Principles of Algorithm Design II
CSCI2321 - Principles of Computer Design
CSCI2194 - Professional Ethics and Design Seminar
CSCI3290 - Independent Study on Java

Fall 02
CSCI1320 - Principles of Algorithm Design I
CSCI1321 - Principles of Algorithm Design II

Spring 02
CSCI1321 - Principles of Algorithm Design II
CSCI2194 - Professional Ethics and Design Seminar

Fall 01
CSCI1320 - Principles of Algorithm Design I
CSCI3294 - Seminar on Program/Pointer Analysis

 


Research Information

I document my research on planetary rings here. I now keep a Wiki where my students record their research work. I also have an older page with research information including projects that I did in graduate school.

Here is my Google Scholar Citation page with a list of my publications and citations.


Brief Introduction

I graduated from Trinity University in Spring 1996 with Honors in physics and computer science. I went immediately to the University of Colorado at Boulder to work on a Ph.D. in astrophysics. Along the way I picked up Masters degrees in astrophysics and computer science. I did my dissertation work with Glen Stewart at CU on gravitational wakes in rings. I'm now an Associate professor in the Department of Computer Science back at Trinity.

If you're interested in seeing a CV, there's one here.

In late 2009 I discovered Scala and fell in love with it. Here is a collection of links related to things on Scala.


mlewis@trinity.edu