Effectful and General ContractsI am working with Amr Sabry to explore the interactions of software contracts with stateful and effectful computations. We are working toward unifying these behaviors and producing a cleaner, more expansive contract system in the process.
Natural Language and LogicI am currently investigating applying logic to natural language and performing natural logic inference as part of a research group with Larry Moss.
Search Strategies in miniKanrenDaniel Friedman and I are investigating search strategies for miniKanren, including one for A* search using heuristics as described here.
[Complete] Pocketwatch: A Parallel Language
During my senior year of my undergraduate education at Trinity University, I developed a small parallel language primarily aimed at parallel programming education and easy parallel structuring. It works by specifying code blocks to run at a given "time step" and enumerating timesteps, yielding straightforward, synchronous parallel computation. It is, inadvertantly, quite stream-like in nature. Advised by Maurice Eggen, the project ultimately became my undergraduate thesis with a full language specification and partial implementation.
[Complete] High-Performance Particle Simulations
Mark Lewis performs large-scale, computationally-intensive simulations of Saturn's rings as part of his planetary research. I spent part of the Summer 2010 designing a tree-based locking algorithm for safely handling particle collision detections. The main idea is to store the particles in a large tree where (spatial) node size is determined by the size of particles in the tree. The previous approach relied on a uniform 2D grid which would slow considerably with larger, moonlet-sized particles. This appraoch uses the tree, tagging nodes as 'locked' when performing collisions, producing much better timing results for a certain subset of particle collision simulations (primarily those with several large particles and a significant number of smaller ones).
- Mark Lewis, Cameron Swords. Optimizing Polyhedra Collision Detection and Handling for Planetary Ring Simulations. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, page 157-161, July 2011.
- Cameron Swords, Amr Sabry. A Type and Effect System for Contract Monitoring. Submitted to ICFP'13.
- Cameron Swords, Daniel P. Friedman. Monads a la Mode. Unpublished.
- B501—Theory of Computing with Dirk van Gucht
- B551—Elements of Artificial Intelligence with Kris Hauser
- PHIL-P551—Set Theory with Larry Moss
- P523—Compiler Design with Ryan Newton
- B522—Programming Language Foundations with Amr Sabry
- B621—Advanced Concepts in Programming Languages with Daniel Friedman
- B521—Programming Languages with Daniel Friedman
- P536—Advanced Operating Systems with Martin Swany
- B629—Domain-Specific Languages and Compilers with Ryan Newton
- Spring 2012–Fall 2013—C311: Principles of Programming Languages with Dan Friedman
- Fall 2011—A110: Introduction to Computers and Computing with Charles Pope
Odds and Ends
Snippets and Toys
- Tannenbaum [link]
The second week of Christmas break, for an entry into the PLT Games contest for the month, my wife and I hacked together a Turing tarpit langauge that uses a simplistic version of the lambda calculus and a syntax that makes programs look like, well, Christmas trees.
- Parenthepress [link]
A week over Christmas break yielded an entire static blogging framework made in scheme with Markdown support done in perl. It's easy to use, extensible, and lightweight.
- S-Forth [link]
The end result of a bit too much free time, this is an implementation of Forth (with small syntactic changes) embedded inside of scheme.
- Kaleidoscope [link]
The result of a few hours of code at the suggestion of a friend, I've developed something that could be construed as a kaleidoscope. It's a neat toy for producing pretty pictures.