Programs

Programs

My teaching lives across computer science, cybersecurity, and formal reasoning, with each lane reinforcing the others.

These are not separate silos. Programming, cybersecurity, proof, abstraction, and technical communication all become stronger when students can see how the ideas move across contexts.

Computer science

Programming, data structures, and the foundations students build on

This lane includes the early technical courses that shape how students write code, debug responsibly, and reason about structure. I want these classes to build judgment as well as skill.

  • Programming as a practice of explanation and revision.
  • Data structures and algorithms as disciplined ways of organizing thought.
  • Technical writing and communication as part of the work, not an afterthought.

Cybersecurity

Security work grounded in reasoning, systems thinking, and clear communication

I want cybersecurity students to learn more than tool usage. They should be able to critique systems, explain tradeoffs, and make technically careful arguments about what matters and why.

  • Adversarial reasoning and careful attention to assumptions.
  • Security writing that separates evidence, interpretation, and recommendation.
  • Project work that connects technical detail to broader judgment.

Formal reasoning

Proof, abstraction, and mathematical structure as living parts of computing

Formal reasoning runs through my work because students make better technical decisions when they can justify claims precisely and inspect the structure beneath a problem.

  • Discrete structures and proof as part of computing practice.
  • Graph theory, combinatorics, and mathematical communication.
  • A classroom culture where rigor and support reinforce each other.

How the lanes connect

These areas work best together when students can feel the shared habits underneath them.

LaneStudents practiceTypical outputsWhat carries across
Computer scienceProgramming, decomposition, debugging, implementation disciplinePrograms, labs, technical explanations, small systemsClarity, iteration, and accountable technical choices
CybersecurityThreat modeling, critique, systems reasoning, technical writingReports, analyses, prototypes, security-oriented investigationsPrecision about assumptions, evidence, and consequences
Formal reasoningProof, abstraction, symbolic thinking, mathematical communicationProof writeups, reading notes, expository summaries, theoretical workArgument structure, rigor, and confidence with difficult ideas

What I want students to leave with

The point is not exposure to topics alone. The point is stronger habits of thought.

  1. Read carefully. Students should learn to inspect claims, code, and systems without rushing past the structure.
  2. Explain clearly. Technical understanding becomes more durable when students can articulate what they are doing and why.
  3. Revise honestly. Real growth happens when iteration is normal and strong work is understood as the product of revision.
  4. Build something shareable. A project, proof sketch, prototype, talk, or report gives students a real way to own the work.

Program FAQ

A few questions people often have about how these areas fit together.

Why keep formal reasoning so close to computing?

Because proof, abstraction, and careful argument help students make stronger decisions in programming, cybersecurity, and technical communication.

Are the cybersecurity and computer science lanes separate?

They are distinct, but I do not teach them as unrelated. Students benefit when they can see how reasoning habits travel between code, systems, and security questions.

Where do student projects fit?

Project work lives across all three lanes. Some projects are theoretical, some are applied, and many move between the two.

Next step

If you want the fuller teaching approach, the best follow-on pages are Teaching and Projects.