I am a Software Engineer at CrowdStrike on the Linux Falcon Sensor Team. I research techniques to detect malicious activity using Linux OS kernel memory, process, networking, and file subsystem operations and state.
Previously, I was a R&D Software Engineer III at VMware on the ESXi Operating System Memory Management Team. I worked on hypervisor memory performance and Software-Defined Memory Tiering.
I am broadly interested in systems, cloud computing, security, and resource management.
I graduated in 2021 with a B.S. in Computer Science from Columbia University. At Columbia, I conducted research with Professor Jason Nieh on protecting virtual machines from hypervisor exploits, and Professor Lydia Chilton on computational design. I also served as the Head Teaching Assistant for Professor Jae Woo Lee's Advanced Programming in C course.
Outside of research, I enjoy running and was on the NCAA DI Cross Country and Track & Field Team at Columbia. Now, I am a Volunteer Team Assistant for the Special Olympics Track & Field Team.
Spring 2024 | Volunteer Instructor | Python Club | Python 2 |
---|---|---|---|
Fall 2020 | Head Teaching Assistant | Columbia University | Advanced Programming in C (COMS W3157) |
Spring 2019 | Teaching Assistant | Columbia University | Advanced Programming in C (COMS W3157) |
Fall 2019 | Teaching Assistant | Columbia University | Advanced Programming in C (COMS W3157) |
WordBlender: principles and tools for generating word blends.
Published in the Proceedings of the 25th International Conference on Intelligent User Interfaces, Cagliari, Italy, March, 2020.
Sam H. Ross, Ecenaz Jen Ozmen, Maria V. Kogan, and Lydia B. Chilton. 2020. WordBlender: principles and tools for generating word blends. In Proceedings of the 25th International Conference on Intelligent User Interfaces (IUI '20). Association for Computing Machinery, New York, NY, USA, 38–42. https://doi.org/10.1145/3377325.3377527
HypSec Dynamic Memory Management | Secure dynamic memory management in a retrofit Linux KVM/ARM hypervisor. Implemented new interfaces for untrusted code paths to request access to VM memory for performing dynamic memory management (e.g., page swapping). Scrubbed and encrypted VM memory before granting untrusted code access. | Written in C. Requires 64-bit ARMv8 server hardware. | Operating Systems II (COMS E6118) |
---|---|---|---|
Kleene-C | Programming language that supports multi-dimensional array types, sequence slicing, garbage-collection, and static scoping. Compiler implemented in OCaml and C targeting LLVM. | Written in OCaml, C targetting LLVM. Requires LLVM, GCC, OCaml, OCamlBuild, OPAM. | Programming Languages and Translators (COMS W4115) |
Linux Weighted Round Robin Scheduler | Load balancing multiprocessor system scheduler, and system calls that enable users to set process ranks and examine CPU load. | Written in C. | Operating Systems I (COMS W4118) |
Encrypted Client/Server Messaging System | Messaging system that enables clients to receive a certificate from a certificate authority, securely store usernames and passwords (salted/hashed), request recipient certificats, send TLS encrypted messages, digitally sign messages, and verify/decrypt received messages. | Written in C. Requires OpenSSL. | Computer Security I (COMS W4181) |
Query Processing Engine | Apply iterative set expansion to extract information in natural-language text such as research literature, web, and archives. System uses two Java servers to annotate text and perform iterative set expansion. | Written in Python. Requires Stanford CoreNLP Java toolkit, Google Custom Search Engine. | Advanced Database Systems (COMS E6111) |
You can contact me at maria.kogan@columbia.edu or on LinkedIn.