Fall 2024
COMP 115: Problem Solving and Python Programming
There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well.
FYE 101 - AI, Big Data, and You
AI (Artificial Intelligence) is everywhere, including here with you in 2024. The short history and steady progress of AI has featured more hype than reality, yet we now find ourselves faced with new data-driven models that exceed many of our expectations, for example in the spaces of "writing" text (ChatGPT, Claude, Copilot, Gemini) or "creating" images (DALL-E 3, Midjourney). New career paths are emerging for you and the jobs and careers of the near future will require computational skills that leverage the human and machine interface. But what are the skills needed? This course will expose students to and provide practice with working with data, computational tools, and the workflows that drive Machine Learning (ML) applications in almost all disciplines. Skills include locating, storing, managing, "cleaning", statistically describing, plotting, and writing about data. Exposure to machine learning workflows will include the use of tools for clustering and classifying data. In parallel to the "hands on" computational work, we will collectively consider the broader potentials, implications, and concerns with AI in our lives. Should we be concerned? Aren't some AI models biased? Isn't it cheating to work on drafts of your next paper with an AI? And just how do you fight the instinct to trust a "human-sounding" machine?

Spring 2024
COMP 401: Senior Seminar: vAI
AI and Software Development: Over the next three months, students will join a team of software developers over three sprints to release a new version of Lexos, a web-app that provides a work flow for scholars who want to apply computational methods to their digitized texts. In parallel, students will "level-up" areas of professional, computational, and software development competencies.
COMP 121 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including number systems, logic, graphs, trees, matricies, automata, and regular expressions (but of course).

Fall 2023

FYE 101 - AI, Big Data, and You
AI (Artificial Intelligence) is everywhere, including here with you in 2023. The short history and steady progress of AI has featured more hype than reality, yet we now find ourselves faced with new data-driven models that exceed many of our expectations, for example in the spaces of ŇwritingÓ text (ChatGPT) or ŇcreatingÓ images (DALL-E 2, Midjourney). New career paths are emerging for you and the jobs and careers of the near future will require computational skills that leverage the human and machine interface. But what are the skills needed? This course will expose students to and provide practice with working with data, computational tools, and the workflows that drive Machine Learning (ML) applications in almost all disciplines. Skills include locating, storing, managing, ŇcleaningÓ, statistically describing, plotting, and writing about data. Exposure to machine learning workflows will include the use of tools for clustering and classifying data. In parallel to the Ňhands onÓ computational work, we will collectively consider the broader potentials, implications, and concerns with AI in our lives. Should we be concerned? ArenŐt some AI models biased? IsnŐt it cheating to work on drafts of your next paper with an AI? And just how do you fight the instinct to trust a Ňhuman-soundingÓ machine?
COMP 121 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including counting, graphs, trees, matricies, automata, and regular expressions (but of course).

Spring 2023
Sabbatical ...


Fall 2022
COMP 118 -- Object-oriented Programming
An introduction to the Object-Oriented Programming (OOP) paradigm. Emphasis is placed on a review of purely procedural programming with a transition to the use of objects, specifically the use of the C++ class mechanism. Coverage will include detailed probes of memory used in the elementary data structures of variables, arrays, and lists, including when allocated on either the runtime stack or heap. Topics will include pointers, recursion, operator overloading, and the use of inheritance for code reuse and extensibility.
COMP 255 -- Artificial Intelligence
AI ... is it everywhere? Do we worry about AutoML? This course provides hands-on practice and work with the languages (Python and R) and libraries to search wisely, preprocess data, build models, and consider the potential of AI techniques in new (think "start-up") domains. Particular attention will be paid to some of the biases that exist in some models currently in use as we consider best-practices for recognizing and addressing biases during model building.

Fall 2021
COMP 118 -- Object-oriented Programming
An introduction to the Object-Oriented Programming (OOP) paradigm. Emphasis is placed on a review of purely procedural programming with a transition to the use of objects, specifically the use of the C++ class mechanism. Coverage will include detailed probes of memory used in the elementary data structures of variables, arrays, and lists, including when allocated on either the runtime stack or heap. Topics will include pointers, recursion, operator overloading, and the use of inheritance for code reuse and extensibility.
COMP 499 -- Research in Machine Learning

Spring 2022
COMP 118 -- Object-oriented Programming
An introduction to the Object-Oriented Programming (OOP) paradigm.
COMP 121 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including counting, graphs, trees, matricies, automata, and regular expressions (but of course).
BIO 498 Advanced Topics in Genomics
Co-taught with Dr. Shawn McCafferty (Biology), selected topics from contemporary genomics and bioinformatics including High Throughput Sequencing technologies and pipelines, genome assembly and annotation, RNASeq, variant analysis, GWAS, and metagenomics.

Spring 2021
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well. (Python v3.x)
COMP 400 -- Senior Seminar
Time to stop being "a student". Students work in teams in a 12 week "start up" sprint, ending with a pitch to a panel of potential funders for future development.

Jan-term 2021
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well. Note: This course will be taught entirely online for four weeks. Assignments will have a data science flavor. (Python v3.x)

2020
Short gig as Director of Digital and Computational Learning, Loomis Chaffee School, Windsor, CT.
Fall 2018
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well. (Python v3.x)
COMP 215 Algorithms Lab
COMP 398 Startup 1.0 - Machine Learning
“Machine Learning” is a new favorite phrase to include in a ramped-up business model. Next to including the term “block-chain” in your title, saying your app or experiment uses “machine learning” will generate attention. Machine learning represents a new third phase in the history of Artificial Intelligence (AI). This course is a semester-long, project-based experience that places students on teams within a (fictional) company to build prototype apps and products in a 15-week development cycle that ends with a pitch for continued funding. The emphasis includes a study and application of unsupervised and supervised methods for cluster and classification algorithms as implemented in Python and R. Each team’s software development model will build prototypes that interface with IoT (Internet of Things) devices that leverage voice (Alexa, Google Home, HomePod), continuous monitoring for health care, and/or the potential for voice-activated, elder/home care assistants.

Spring 2019
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well. (Python v3.x)
COMP 121 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including counting, graphs, trees, matricies, automata, and regular expressions (but of course).
COMP 399 -- Machine Learning


Fall 2017
DNA: a first-year seminar
An amazing blend of science and computing emerges when considering the molecule "Deoxyribonucleic Acid" (DNA). DNA is the blueprint of life for all organisms on Earth and throughout evolutionary time. Its distinctive and beautiful physical nature, a double helix of four bases, maps onto its functionality as a bearer of information, generation after generation. Fully sequenced genomes including the human genome and hundreds of microbial genomes have become the starting point for attempts to answer a wide range of biological and quantitative questions. This is your life in 3.2 billion letters, your genome as 3.2 Gigabytes, and your personalized medicine in a world of DNA from womb to tomb.
COMP 116 -- Data Structures
OOP using C++'s STL, introductory numerical methods, pointers and memory management, and technical writing.

Spring 2018
COMP 131 -- Computing for Poets
HTML5/CSS, W3C validation, XML, and scripting in Python to mine texts with examples from the Anglo-Saxon and J.R.R. Tolkien corpora. In short: Digital Humanities on speed.
COMP 116 -- Data Structures
OOP using C++'s STL, introductory numerical methods, pointers and memory management.
COMP 499 - Bioinformatics Research
Six bioinformatics students engage with a heavy dose of Python's scikit-learn libraries and R to apply machine learning algorithms to RefSeq data.


Fall 2016
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well.
COMP 298 -- Startup v1.0: Medical Devices, Mobile Apps, and Machine Learning
Personal healthcare and computing are merging as a disruptive technology. The excitement around access to data that has the potential to impact our health far exceeds the craze around wearables that track our daily steps. From real time glucose monitoring and insulin dose changes to the application of machine learning algorithms to detect situations that may lead to potential seizures before they occur, the time is ripe for the development of new applications that interface medical wearables with mobile devices. This course combines practice with startup experiences, mobile app development (e.g., learning AppleŐs new Swift language), machine learning algorithms, and the newest wearable devices, e.g., Dexcom sensors and the Embrace watch from Empatica.

Spring 2017
COMP 111 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including counting, graphs, trees, matricies, automata, and regular expressions (but of course).
COMP 400 -- Senior Seminar


Fall 2015
Storytelling with Google Maps: a First Year Seminar.
If a picture is worth a thousand words, how many for maps? Writing stories for the iPad using Apple's iBook Author, Google Earth Pro, Photoshop, and iMovie.
BIO/COMP 242 -- DNA
Scripting in Python to explore the wonders of genomes as texts. Threads: the human microbiome project, ethical implications of personalized genomic medicine, reviewing a 23andMe report, computational experiments, and scientific writing.

Spring 2016
COMP 116 -- Data Structures
OOP using C++'s STL, introductory numerical methods, pointers and memory management.
COMP 131 -- Computing for Poets
HTML5/CSS, W3C validation, XML, and scripting in Python to mine texts with examples from the Anglo-Saxon and J.R.R. Tolkien corpora. In short: Digital Humanities on speed.


Fall 2014 -- Spring 2015 /
I had a year-long sabbatical traveling (France, Key West, Iceland), fishing, and working on two projects: (i) text mining -- our ongoing development of the Lexos tools to help explore digitized texts; and (ii) I ported a manuscript of the travels and experiences of my grandfather as he fought in WWI to the iPad; my brother, John, and I are retracing our gramp's steps from Maine to basic training in Massachusetts to England by ship and then through France in the hell they called 'The Great War'.


Literary Programming - NY Times April 01, 2012
Fall 2013
COMP 099 -- MOOC++
A half-credit course where students (i) finish an online course, e.g., Code Academy's PHP, (ii) complete an oral assessment, and (iii) build something for a client.
BIO/COMP 242 -- DNA
Scripting in Python to explore the wonders of genomes as texts. Threads: human microbiome project, ethical implications of personalized genomic medicine, sharing my 23andMe report, and Linux.
COMP 299 - Future Interactions
Take this: Google Glass, Leap Motion, Raspberry Pi, and Pebble watches. Now build something. Moving intellectually curious students to creators and makers.
COMP 215 -- Algorithms Lab
C/C++ ... let's cut code ... and run experiments ...
COMP 499 -- Genomics Research
Investigation of Two Microbial Communities Using Next-Generation Data: Mengyang Li '14, Bioinformatics

Spring 2014
COMP 116 -- Data Structures
OOP using C++'s STL, introductory numerical methods, pointers and memory management
COMP 131 -- Computing for Poets
HTML5/CSS, W3C validation, XML, and scripting in Python to mine texts, examples in the Anglo-Saxon and J.R.R. Tolkien corpora. Digital Humanities on speed.
COMP 499 -- Genomics Research
Investigation of Two Microbial Communities Using Next-Generation Data: Mengyang Li '14, Bioinformatics


Fall 2012
COMP 111 -- Foundations of Computing Theory
An introduction to the (discrete) math that computer scientists need, including counting, graphs, trees, matricies, automata, and regular expressions.
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well.
COMP 299 -- iOS Development
Writing mobile apps.
COMP 499 -- Genomics Research
Machine Learning on the Human Microbiome
COMP 500 -- Honors Thesis (Anthony Castellani '13)
Forensic computing (working title)

Spring 2013
COMP 115 -- Robots, Games, and Problem Solving
Programming. There seems to be no end of the urgent need for more and more people to know how to script, how to write software, how to program. This course is about learning how to program and how to do it well.
COMP 255 -- Artificial Intelligence
An emphais on the experimental side of AI. Like most of computing, AI includes many areas; we'll focus on three particular areas: searching game trees, machine learning, and text mining.


Fall 2011
First-Year Seminar -- Storytelling Through Computer Animation
What's your story? A study of the rich story-telling in graphic novels and practice with telling stories using the Alice animation environment and layout software Comic Life.
BIO/COMP 242 -- DNA
Scripting in Perl to explore the wonders of genomes as texts. Thread: ethical implications of personalized genomic medicine.
COMP 499 -- Genomics Research
Detecting Horizontal Transfer in Microbial Genomes.
COMP 500 -- Honors Thesis: Cluster Verification
Donald Bass '12 (co-advised with Dr. Mike Kahn, Statistics).

Spring 2012
COMP 115 -- Robots, Games, and Problem Solving
COMP 131 -- Computing for Poets
XHTML, CSS, W3C Validation, Linux web servers, XML/TEI-markup, and scripting in Python to mine texts, examples in the Anglo-Saxon and J.R.R. Tolkien corpora. Now this is a fun course!
COMP 500 -- Honors Thesis: Cluster Verification
Donald Bass '12 (co-advised with Dr. Mike Kahn, Statistics).


Fall 2010
    First-Year Seminar -- Storytelling Through Computer Animation
    COMP 215 -- Algorithms

Spring 2011
    COMP 116 -- Data Structures
    COMP 255 -- Artificial Intelligence -- Text Mining
    COMP 399 -- Independent Study: iPhone/iPad apps
    COMP 499 -- Independent Research: Experiments in Text Mining
    COMP 500 -- Honors Thesis in Lexomics


Fall 2009
    First-Year Seminar -- Storytelling Through Computer Animation
    COMP/BIO 242 -- DNA
    COMP 198 -- Topics in Bioinformatics
    COMP 499 -- Research in Genomics: Horizontal Transfer

Spring 2010
    COMP 131 -- Computing for Poets
    COMP 116 -- Data Structures


Fall 2008
    First-Year Seminar -- Storytelling through computer animation
    COMP 335 -- Programming Languages
Spring 2009
    COMP 115 -- Robots, Games, and Problem Solving
    COMP 116 -- Data Structures
Fall 2007
    COMP 215 -- Algorithms
    COMP/BIO 242 -- DNA
Spring 2008
    COMP 116 -- Data Structures
    COMP 131 -- Computing for Poets
Fall 2006 - Spring 2007
    Year-long sabbatical ...
Fall 2005
    COMP 115 -- Programming Fundamentals (CS1 in C++)
    COMP/BIO 242 -- DNA
    COMP 398 -- C# and Mobile Devices
Spring 2006
    COMP 111 -- Foundations of Computing Theory
    COMP 335 -- Programming Languages
    COMP 399 -- Phylogenetic Trees


New courses ...
    COMP 111 -- Foundations of Computing Theory
    COMP 131 -- Computing for Poets
    COMP/BIO 242 -- DNA