Teaching Experience
The art of teaching is the art of assisting discovery! — Professor Mark V. Doren
As Professor Doren said, II also believe that the best teaching method is to assist students in learning and discovering new things. To me, teaching is a collaborative mutual learning process, where students learn from teachers' experience, and the teacher learns from students' fresh ideas. For more on my pedagogical approach, see my Teaching Philosophy.
Here are some of my teaching experiences
Lead Teaching Assistant
Columbia University
This is an advanced undergraduate course. The course covered both the front end and back end of Compilers, focusing on Program analysis and Optimization. As the lead TA, I helped the professor design the course content. I also created the programming assignments in the LLVM framework. Every week, I held a two-hour recitation session (a parallel to a regular lecture) to discuss the practical problems we designed for programming assignments. Such assignment problems included AST analysis, data type analysis from AST, Control/Data flow analysis, Dead code elimination, etc.
Lecturer
Ahsanullah University of Science And Technology, Dhaka, Bangladesh.
This was a third-year undergraduate course on "Introduction to Formal Languages and Compilers". I taught
- Basics of formal languages - Finite Automata, Regular Languages, Context Free Grammars, Push Down Automata, Turing machine.
- Basics of Compilers - Lexical Analyzer, Syntax Analyzer, Abstract Syntax Tree, Code Generation, Three address code.
This is the practical lab session for Compilers. I taught how to build a compiler using different tools i.e., Lex, Yacc, etc.
This is an introductory undergraduate course. In this course, I taught the basics of digital systems, how to design them. In particular, I taught how to translate boolean logic into digital circuits and compute based on the clock signal. A case study of a digital system with a booth multiplier. In addition to these, I taught how to build a 4-bit microprocessor from scratch, the basics of instructions, different cycles in instruction execution, translate instruction to machine code, and design a processor for following the instruction code.
In this lab, I demonstrated several case studies of Digital systems. These include Four-bit binary adders with carry, Booth Multiplier, and a four-bit processor design. We simulated these with p-spice. Students had to submit a term project to develop an exciting system with real-life usages in this course. I supervised about ten such projects.
Industry Experience
As a researcher in Software Engineering, my aim is to solve problem faced by the software engineers in our industry. Over several internships and jobs, I have had the experience and exposure to software engineering in the industry. Here are some of my industry experiences.
I worked in the BigCode team at Facebook, to design models for understanding source code changes. In particular, we designed a model which learns to reason about source code Diffs from millions of code changes submitted to the code base.
I worked in Google Cloud security team, where I helped develop technique for detecting Phishing attempt through Google Drive documents. I worked with textual analysis (static component), and sandboxed system behavior (dynamic component) for analyzing the documents.
In this internship, I had a hands-on experience with practical program repair tool (Elixir). A major challenge in Program Repair is the localization of the fault. I developed a tool for improving such fault localization using different information available to the developer. Most prominent of such information is the bug report corresponding to the fault.
I mainly worked as a part time research-consultant in Fin-tech. We developed techniques for analyzing Value-at-risk and way for portfolio optimizations.
I worked here as a Junior Software Engineer. This company is a payment solution provider, and as an engineer here, I worked in contact-less payment (NFC based) payment client. In addition, I also worked in programming the payment chip based card. I implemented Visa and Mastercard specification for payment processing in KSL's contact-less payment processing pipeline.
Service Experience
Research Community Service
- Regular reviewer : TSE, TOSEM, IEEE software.
- External reviewer : ICSE'20-21-22, ASE'20-21, FSE'20-21.
-
Program Committee
ESEC/FSE - Tool Demo Track, 2022
FSE - Research Track, 2023
ICSE - Research Track, 2024
MSR Mining Challenge 2021
Workshop on Natural Language Processing for Programming (NLP4Prog), 2021. - Session Chair : FSE'21 (Program Repair, Code Recommendation)
Community Leadership
- Secretary Association of Bangladeshi Students at UVa. (2017-2018).
- Founding Vice President Engineering Students’ Association of Bangladesh, (2013- 2015).
- Organizer International Engineering Innovation Summit Bangladesh, 2015.