Projects Blog About Contact

Welcome! I'm Pramod Lakshmanan. Here are some of my recent projects.


Jed-i

March 2017 - Present
python
flask
javascript
react
jupyter

A video speaks a thousand words!

You just watched a Thodio(portmanteau of Thoughts and Video) embedded in a Jupyter notebook. I built the entire app as a consultant for Jed-i's Machine Learning course.

The software has three components:

Thodio Creator

This component is an HTML5 Canvas interface used by instructors to create content, ala Khan Academy, using a drawing pad. In addition to capturing strokes entered by the drawing pad, it supports various input-types such as LaTeX, geometric shapes and images. The instructor can also "freeze" time and add multiple items that appear simultaneously when watched by students. After the content is entered, the instructor can seek to specific timestamps and enter captions.

I built the sidebar and input components using React and relied on Canvas APIs to build the core application. Data is saved by compacting the list of all actions performed by the instructor and stored as a JSON blob by a Flask server exposing a simple REST interface.

Thodio Player

This component plays Thodios created by instructors. The raw JSON data captured by the Thodio Creator is fetched and played on the Canvas, thereby drastically reducing the bandwidth required to play video-like content.

Like any media player, it supports operations such as play speed, fast forward and rewind. It also has a special feature where students can seek by clicking on an element. will seek I used a static KD-Tree, a spacial data-structure, to implement this feature and it was quite fun!

Jupyter Extension

The ML course is delivered as a bunch of Jupyter Notebooks. So I built a Jupyter front-end extension to embed Thodio Players inside the notebook by executing a IPython magic command. I also extended the Markdown syntax to support features such as highlighting and underlining.

If you're in Bangalore, enroll!


Intense - Programming bootcamp

July 2016 - Present
teaching
problem-solving
python
javascript
linux
git

While contributing to education as a software engineer is great, I missed teaching. So I wrote a popular answer on Quora which led to a bootcamp to help junior web developers take their skills to the next level.

Based on students' interests, I create customized learning paths, do code reviews, create video tutorials, help students with their side-projects, and land them freelancing gigs.

I found that my students, mostly from 2nd tier Indian engineering colleges usually lack problem solving and Discrete Math skills. So I focus on improving students' thinking process by leveraging structured tools such as George's Polya's "How to Solve It". I also help students learn more effectively using techniques outlined in this blog post.

You can find the detailed curriculum here. If you're interested, fill up this survey and enrol!


Concept Coaster

September 2015 - Present
python
django
javascript
react
digital-ocean
algolia
hackerrank-api

https://conceptcoaster.com

A minimalistic web app to build adaptive-learning courses

Let's say you come across a problem at work which requires knowledge of Principal Components Analysis(PCA). Your friend recommends the popular "Introduction to Linear Algebra" book by Gilbert Strang. You find that it is explained on Page 457. But your Linear Algebra is a bit rusty and you'd prefer to reach PCA as fast as possible.

What if there was a way to only learn concepts which are required to understand PCA instead of studying each concept from page 1 to page 457 in detail?

Enter Concept Coaster

Instructor: Concept Coaster helps the instructor to split a large topic into small, atomic concepts and specify dependencies between them. The instructor can also create text and multimedia content, quizzes and coding exercises pertaining to each concept in the topic.

Student: When a student visits the site for the first time, Concept Coaster guides the student through an adaptive pre-test using the information entered by the instructor to identify the student's current knowledge level so that the student can starting learning at the edge of their knowledge instead of wasting time reviewing known concepts. Also, the entire concept graph is visualized on the main page so that the student can choose a learning path optimized for reaching their target concept as quickly as possible.

Future plans:

Major Goals for the next 4 years are:

  • Create a concept graph of all the topics in a typical undergrad Computer Science curriculum.
  • Develop visual tutorials for Linear Algebra and Compilers.
  • Curate resources on tough topics like Theory of Computation and NP-Complete problems.
  • Calculate PageRank for concepts based on the concept graph, and highlight important concepts to students before they embark on their journey of learning so that they can allocate more time to these concepts.
  • Build a problem-solving component to help students develop both creative and analytical problem solving capabilities.
  • Use machine learning to identify latent dependencies between concepts and discover links between seemingly unrelated concepts by leveraging students' responses to quizzes.

Sounds interesting? Watch the project on GitHub


Kaleido

February 2014 - February 2015
javascript
backbone
spa
java
dropwizard
phantomjs
aws

An assessment and analytics platform for K-12 students and schools

I was an early employee at New Rubric Solutions, an edtech company. Here are some accomplishments during my time with the company.

  • Lead the Design and development of the company's flagship single-page web application.
  • Contributed to architecture/design and lead the development of a reporting application used by parents to keep track of their child's progress at school.
  • Developed core abstractions used by product engineers to build maintainable applications. (My libraries are still being be used one year later without any issues and major modifications)
  • Mentored interns and teammates on front-end development and software-engineering best practices.

One of my major highlights was building a web app to generate student reports by aggregating thousands of data points collected from each student through assignments and additional inputs by teachers. The report had to look beautiful on print and fit within 6 pages even though each student had different data associated with them.

Oh, and the product had to be built and deployed within 4 weeks by a team consisting of a sole full-stack developer(me), two senior backend developers, an awesome QA and an enthusiastic intern . This required working on nights and weekends, a bunch of PhantomJS tricks, detailed attention to each pixel, autoscaling our infrastructure to handle increased load during the parent-teacher meeting season, and dozens of late-night debugging sessions with teammates to workaround @media print issues.

But it was all worth it when we printed the reports and received positive feedback from delighted parents.

Here are a few sample reports: (They look better when printed!)


I've also worked on a bunch of other projects between 2010 to 2013. Please see my resume for more information.