Sitemap

A list of all the posts and pages found on the site. For you robots out there is an XML version available for digesting as well.

Pages

Page Not Found

Page not found. Your pixels are in another canvas.

About me

Archive Layout with Content

Posts by Category

Posts by Collection

Curriculum Vitae

Fun Facts

Markdown

Page not in menu

This is a page not in th emain menu

Page Archive

Projects

Research Vision

Sitemap

Posts by Tags

Talk map

Talks and presentations

Teaching

Terms and Privacy Policy

Blog posts

Jupyter notebook markdown generator

Posts

Future Blog Post

less than 1 minute read

Published:

This post will show up by default. To disable scheduling of future posts, edit config.yml and set future: false.

Blog Post number 4

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 3

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 2

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

Blog Post number 1

less than 1 minute read

Published:

This is a sample blog post. Lorem ipsum I can’t remember the rest of lorem ipsum and don’t have an internet connection right now. Testing testing testing this blog post. Blog posts are cool.

portfolio

Visualizing TwitterTrails Stories (2018.1 - 2018.10) [poster]

TwitterTrails is a tool that allows members of the media to track the trustworthiness of stories shared on Twitter co-built by Panagiotis Metaxas at Wellesley College. My prototype visualizes the stories (circles) and their tags (linked lines connecting the circles to the dots on the outer bigger circle) alongside their magnitudes of spread (sizes of circles) and levels of trustworthiness (blue=undisputed, red=doubtful) as determined by TwitterTrails’ algorithm. With this interactive visualization, users are able to focus on stories/tags of their interest through the filtering mechanism and interpret metrics of a story more easily without examining its associated tweets.

Venbrace (2019.1 - 2020.7) [thesis] [poster] [demo]

Venbrace is a textual representation for the block-based MIT App Inventor. Its design is principled and empirically evaluated through two user studies. Although no conclusive evidence was found from either study, this project is my first exploration in the space of human-centric programming language design.

Projection Boxes for Education (PB4Edu) (2020.8 - 2021.3) [paper] [talk]

We used Projection Boxes, a Live Programming visualization, in an introductory programming class with 600+ students at UCSD over one academic quarter, and found that students preferred Projection Boxes to the baseline IDE and considered them helpful for their learning.

PopPy (2021.1 - 2021.3) [paper]

I explored the idea of PopPy in collaboration with Kasra Ferdowsi in a class project. Also built on top of SnipPy, PopPy allows the user to write partial instead of full specifications for program synthesis, which can be especially useful when the specs involve long, complicated data structures.

SnipPy+ (2021.3 - 2021.9)

Built on top of SnipPy, SnipPy+ features a new interaction flow where the user can constantly interact with the synthesizer without leaving and restarting the specifications writing process: they can (1) see synthesis results as they are typing in specifications and (2) keep modifying the specifications / inspecting new synthesis results, until they intend to exit the process.

Live Programming for GUI Applications (2021.12 - 2022.9) [paper] [code]

GUI applications often preserve complex behavior building upon at least three layers of information: GUI changes, code execution, and user-interactions. To help programmers reason about the behavior of GUI applications during debugging, I built a live programming environment that directly displays a time line of intermediate GUI states upon user interactions with the GUI. Without using logs or breakpoints, users can see a timeline of changes in the GUI and their connections to the code in the tool, and such information is always up-to-date to the code.

Z3 Guide (2022.6 - 2022.9) [code]

I developed the Z3 Guide, a 100% client-side web-based educational environment for logic modeling with the Z3 SMT solver. The development of Z3Guide adopted an iterative design with Z3 educators. Since deployment, it has been well perceived by educators and students of logic modeling and Z3. It is also a first step towards reviving rise4fun, a legacy web environment for research tools developed at RiSE @ Microsoft Research. This work was done during my internship in summer 2022 at Microsoft Research. See my fork of the version concluded at the end of my internship, or here for the most recent official Z3 Guide.

Functional Debugging (2022.9 - 2023.1) [paper]

Programmers use debuggers for imperative languages to facilitate debugging. How about debuggers for functional languages? Do functional programmers use debuggers? Or even, how do functional programmers debug? We do not have enough evidence to answer these questions. As an initial step, we interviewed four expert Haskell programmers to find out. Our preliminary findings show that while debugging strategies for Haskell are similar to strategies for other languages, some features of Haskell and functional programming introduce challenges to using these debugging strategies.

Live Programming for Validating AI-Generated Code (2023.1 - 2023.9) [paper] [demo] [code]

AI-generated code is helpful as building blocks towards a complete program, but validating the behavior of such code is not easy. What if we utilize live programming to facilitate the validation of AI-generated code? We built a prototype incorporating live programming and an AI-powered program synthesizer and probed its effects through a user study. Our results demonstrate the effectiveness of live programming in validating AI-generated in mitigating over- and under-reliance on the AI and lowering the cognitive load.

Human-Centered Computational Notebooks (2024.1 - Present)

Computational notebooks such as Jupyter are widely used by programmers of all kinds. Despite complaints on the ease of creating messes in notebooks, possibly due to the out-of-order execution model and flat cell structure, Jupyter notebooks remain more popular than competitors. Why do computational notebooks still serve the needs of their users better than existing alternatives? What can we learn from notebook usage to build better systems that still comparatively support user workflows while alleviating existing problems? This project consists of gathering evidence of notebook use in realistic, day-to-day tasks through ethnographies and designing prototype systems grounded in the collected evidence.

publications

Paper Title Number 1

Published in Journal 1, 2009

This paper is about the number 1. The number 2 is left for future work.

Recommended citation: Your Name, You. (2009). "Paper Title Number 1." Journal 1. 1(1). http://academicpages.github.io/files/paper1.pdf

Paper Title Number 2

Published in Journal 1, 2010

This paper is about the number 2. The number 3 is left for future work.

Recommended citation: Your Name, You. (2010). "Paper Title Number 2." Journal 1. 1(2). http://academicpages.github.io/files/paper2.pdf

Paper Title Number 3

Published in Journal 1, 2015

This paper is about the number 3. The number 4 is left for future work.

Recommended citation: Your Name, You. (2015). "Paper Title Number 3." Journal 1. 1(3). http://academicpages.github.io/files/paper3.pdf

talks

Talk 1 on Relevant Topic in Your Field

Published:

This is a description of your talk, which is a markdown files that can be all markdown-ified like any other post. Yay markdown!

Conference Proceeding talk 3 on Relevant Topic in Your Field

Published:

This is a description of your conference proceedings talk, note the different field in type. You can put anything in this field.

teaching

CSE 230: Data Structures in Java (Spring & Fall 2018)

Tutor, Dept. of Computer Science, Wellesley College, 2018

This is the CS2 course for students after the intro sequence. In this course, ~80 students learned about data structures and object-oriented programming in Java. Every week as the tutor, I assisted lab sessions, held office hours for group (sometimes individual) help, graded assignments, and attended staff meetings.

CS 251: Principles of Programming Languages

Tutor, Dept. of Computer Science, Wellesley College, 2019

This was a core course for Wellesley College CS majors that exposed students to programming language concepts. In this course, ~40 students learned about lambda calculus, types, parsing, language-programming, etc. in Racket and Standard ML. Every week as the tutor, I held office hours, graded assignments, and attended staff meetings.

CSE 230: Graduate Programming Languages

Teaching Assistant, Dept. of Computer Science and Engineering, UC San Diego, 2021

This is a graduate-level course that exposes students to advanced programming language ideas. In this course, ~200 students learned about lambda calculus, types, parsing, language-programming, etc. in Haskell. Every week as the teaching assistant, I held office hours, graded assignments, and attended staff meetings. At the end of the quarter, I gave synchronous feedback on final project presentations.

CSE 8A: Intro to Programming in Python

Teaching Assistant, Dept. of Computer Science and Engineering, UC San Diego, 2022

This is the CS1 course for students new to programming. In this course, ~500 students learned about primitives, data types, arithmic, control flow, and data processing in Python. Every week as the teaching assistant, I led 60-minute discussion sections and 60-minute lab sessions, designed lab assignments, held office hours for conceptual questions and lab hours for programming assistance, graded assignments and exams, and attended staff meetings.

CSE 193: Introduction to CS Research

Instructor, Dept. of Computer Science and Engineering, UC San Diego, 2023

This undergraduate-level elective course is mandatory for participants in the ERSP program, mainly second-year undergrauate students and first-year transfer students new to research. In this course, 53 students learned about various kinds of Computer Science research, literature review, experimental and analysis techniques, research ethics, and collaborations. As the instructor of record, I led 90-minute lectures twice a week, held weekly office hours for individual and group advising and mentoring, provided feedback on research proposals and presentations, and oversaw a teaching assistant who facilitated grading and weekly meeting with students.

CSE 291: LLMs, Programming, and HCI

Teaching Assistant, Dept. of Computer Science and Engineering, UC San Diego, 2024

This is a NEW graduate-level research seminar on recent advances in LLMs, programming systems, and HCI. In this course, students discuss research papers and work on final projects on relevant topics. As the teaching assistant, I held weekly office hours for individual and group advising and mentoring and provided feedback on paper presentations, reading responses, and final projects. In addition, I co-led the development of course materials, infrastructure, and syllabus with the instructor.

CSE 12: Basic Data Structures and Object-Oriented Design

Instructor, Dept. of Computer Science and Engineering, UC San Diego, 2024

This is the CS2 course for students working towards a degree in many computing-related programs at UCSD. In this course, ~50 students learned about basic data structures, sorting algorithms, and object-oriented design in Java. In this intensive five-week summer offering, every week as the instructor, I led two three-hour lectures, created exams, held office hours, and headed a team of one TA and two tutors. I sought student feedback periodically and adjust the course materials accordingly.

CSE 8A: Intro to Programming in Python

Teaching Assistant, Dept. of Computer Science and Engineering, UC San Diego, 2024

This is the CS1 course for students new to programming. In this course, ~500 students learned about primitives, data types, arithmic, control flow, and data processing in Python. Every week as the teaching assistant, I led 60-minute discussion sections and 60-minute lab sessions, held office hours, graded exams, attended staff meetings, designed programming assignments, projects, and their autograders and grading rubrics, and led a group of 8 tutors for assignment review and testing.