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.
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.
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.
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.
| Lane | Students practice | Typical outputs | What carries across |
|---|---|---|---|
| Computer science | Programming, decomposition, debugging, implementation discipline | Programs, labs, technical explanations, small systems | Clarity, iteration, and accountable technical choices |
| Cybersecurity | Threat modeling, critique, systems reasoning, technical writing | Reports, analyses, prototypes, security-oriented investigations | Precision about assumptions, evidence, and consequences |
| Formal reasoning | Proof, abstraction, symbolic thinking, mathematical communication | Proof writeups, reading notes, expository summaries, theoretical work | Argument 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.
- Read carefully. Students should learn to inspect claims, code, and systems without rushing past the structure.
- Explain clearly. Technical understanding becomes more durable when students can articulate what they are doing and why.
- Revise honestly. Real growth happens when iteration is normal and strong work is understood as the product of revision.
- 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