The Computer Science program offers students a path to conduct research and receive honors. The Honors Research program includes three semesters of work beginning spring junior year. CSC 200H Undergraduate Problem Seminar is an intensive seminar on cooperative problem solving. Students explore the subdisciplines and research of computer science faculty learning research methodology and procedure. During their senior year, students independently study a topic of their choosing, conduct original research, and defend their findings in a final presentation.
The degree of honors awarded (“honors in research,” “high honors in research,” or “highest honors in research”) is determined by the Computer Science faculty in consultation with the student’s honors committee.
Department of Computer Science
2515 Wegmans Hall
University of Rochester
Rochester, NY 14620
CSC Design Projects
- Compressing Ray Trajectory Mapping using Bezier CurvesAn alternative solution design for Laser-Plasma Simulation Environment (LPSE).
- Network Construction on Historical and Real-Time DataWe present TSUBASA, an algorithm for efficiently computing the exact pair-wise time-series correlation based on Pearson’s correlation.
- Sampling Over Union of JoinsTo avoid the cost of join and union, given a set of joins, we study the problem of obtaining a random sample from the union of joins without performing the full join and union.
- Tracking WordsWe present findings of a project that studies word meaning changes over time.
- Unsupervised Arousal Valence Estimation from Speech and Corresponding Discrete EmotionThis study proposes a semi-supervised method for obtaining arousal-valence annotations of a speech corpus when only discrete emotion category information is available.
- Abstract Buffered Persistence with Buffered ProntoA buffered variant of the Pronto persistence framework that provides a 1.26x to x6.77x times performance increase with potential data loss contained within 1ms.
- Augmented Transactional MemoryMultithreading introduces complications around synchronizing different threads with shared memory spaces.
- Building a Web Application from ScratchThis semester I built an e-commerce application to sell my artwork and donate the profits to charity. I built a Node.js server using the Express framework and middleware to implement authentication, session management, and security features. The client side code uses the Jade templating language to pass run-time variables into static files which are rendered into HTML and passed to the browser. I designed a relational database to store the relevant information and built it out using MySQL.
- CBET Simulation on GPUsCross Beam Energy Transfer (CBET) is a simulation that models how intersecting laser beams share energy.
- Hyperion: A 3D Visualization Platform for Optical Design of Folded SystemsHyperion is a 3D visualization platform for optical design. It provides a fully immersive, and interactive 3D user experience. It enables the visualization of models of folded freeform optical systems. The frontend user experience is supported by the computational ray-tracing engine of Eikonal+, an optical design research software. We have built a cross-platform light-weight version of Eikonal+ that can communicate with any user interface. We have also demonstrated a prototype of the 3D user experience using a Hololens AR display.
- Safe, Fast Sharing of Memcached as a Protected LibraryMemcached is a widely used key-value (KV) store. It is structured as a multithreaded user-level server, accessed over socket connections by a potentially distributed collection of clients. Because socket communication is so much more expensive than a single operation on a KV store, much of the client library is devoted to batching of requests. Batching is not always feasible, however, and the cost of communication seems particularly unfortunate when—as is often the case— clients are co-located on a single machine with the server, and have access to the same physical memory. Fortunately, recent work on protected libraries has shown that it is possible, on current Intel processors, to amplify access rights quickly when calling into a specially configured user-level library. Library instances in separate processes can then share data safely, even in the face of independent process failures. We have used protected libraries to implement a new version of memcached in which client threads execute the code of the server themselves, without the need to send messages. Compared to the original, our new version is both significantly simpler, containing 24% less code, and dramatically faster, with a 11–56× reduction in latency and a roughly 2× increase in throughput.
- Translation Validation for the QBE Compiler BackendA translation validation tool for a small compiler backend called QBE. The tool can identify invalid intermediate language transformations and optimizations.
- Verifying Lake Ontario’s Water LevelThe Caldwell-Fay equation (2002) attempts to model what Lake Ontario’s current water level would be if dam construction had never taken place along the St. Lawrence Seaway (i.e. the natural hydraulic state of the lake). Newly unearthed Lake Ontario data going back to the 1860s has been discovered, and we had the rare opportunity to be the first to digitize and publicly analyze it. Since this data set predates any dam construction it actually captures the lake’s natural state. Therefore it can be used to verify Caldwell-Fey’s equation which is being used to govern the lake’s inflow and outflow rate on a daily basis.