This page is updated in May 2017, please see my CV for recent work
"The best thing a teacher can do is to bring out the best in students in best ways!!!"
The landscape of education has changed drastically in the past decade or so. Students today have access to most of the courses online taught from renowned professors and universities around the world. They also have access to websites like wikipedia, quora, stackoverflow for Q&A. What does teaching mean in this context?
I believe that teaching should inspire students beyond grades and jobs, instill foundations for life and push boundaries! I explored few experiments during my teaching, some worked and some did not! It is exciting and challenging to be a faculty during this emerging times!Some results from teaching experiments
"faculty support from bottom of the heart, no compromisation in quality of the course” “This is the course which made us to realize what we are capable of. Its not because of the course, its because of instructor and his way of teaching” Overall rating for instructor [Sridhar Chimalakonda] - “+100000... (zeroes go on forever :D :P)” “strength of the course is pushing students to their limits” “Loved it :)” “...How to grab attention without boring...instructor’s commitment, way of explaining things, classroom activities...”
Some Thoughts on What Makes Teaching Interesting?Can we motivate the best undergrads of IIT to solve societal challenges of India and deliver results? ↠ It has the power to profoundly influence people's lives ↠ Probably, the best way to align with state-of-the-art and state-of-the-practice of a subject ↠ An opportunity to address several great challenges in collaboration with young minds, which otherwise is difficult to work alone ↠ My research interests of educational technologies and an opporutnity to improve quality in Indian education |
My Thoughts on TeachingInteract ↠ Informal at the outside - let students play, have fun, explore but be formal inside, meaning no compromise on quality! - clear learning goals, challenging exercises & high quality benchmarks! Innovate ↠ Have fixed and flexible components for every course and adapt it as per specific needs. Use innovative teaching practices to facilitate deeper learning of the subject Inspire ↠ Push their boundaries and provoke them to think, question and inquire beyond conventions |
Software Engineering (Foundations & Practice)Monsoon 2015, 2016 @ IIIT Sri CityThis course provides foundations for design of quality software and at the same time application of these foundations to develop reasonably complex software systems. Focus is on providing foundations like abstraction, [de]composition... and different aspects like processes, requirements engineering, architecture, design, testing with rigorous practical exercises. More details about the course including learning objectives, lectures, exercises and so on are available at sefp Interactive Lectures ↠ Core content of the subject is introduced through seminal and state-of-art articles with discussions around How the topics would evolve in the next 5, 10, 20 years? For example, in the first lecture, the entire class was divided into two groups each figuring out What to develop? (requirements) and How to design? towards “Design of Candy Crush Saga” game Provocative Articles ↠ Classic papers and interesting notes were used instead of textbooks. For e.g., NATO conference reports and Dijkstra’s EWD’s were used to emphasize concepts like abstraction, components, proofs, design and so on Innovative Strategies ↠ Weekly learning reports in course repositories (via Github), video assignments, 5 minute in-class assignments, 3 minute narratives, a lecture of student’s choice (startups), exit slips (a note of attendance with learning), passion projects, a marathon lecture of 7 hours Design thinking exams ↠ Students are asked to argue for and against this statement “Software lifecyles are a myth. Despite so many of them, people never follow them and they still deliver software” in an end exam question Hackathon ↠ A crowdsourcing experiment - developing 60 games in 24 hours as part of mid-exam Continuous Evaluation ↠ A time-boxing approach (review every 24 hours) to design of software in a 12-day rigorous exercise that yielded good-quality software projects. This is a spin-off of Scrum, an agile software development process model. Course Feedback ↠ From anonymous feedback, the course was extremely successful but on the flip side, some students felt the course was heavy and demanded a lot of effort. |
Programming Languages (Foundations & Practice)Spring 2017 @ IIT Tirupati; Spring 2016, 2017 @ IIIT Sri CityThis course is an attempt to provide foundations for understanding the anatomy of programming languages whilst dissecting and analyzing these foundations in the context of several programming languages spanning across imperative, declarative paradigms. I briefly introduced topics such as correctness and axiomatic semantics through a series of lectures on ACM Turing Award articles. I used interesting languages such as Erlang (WhatsApp), Scala (Twitter), Clojure, Rust unlike conventional approaches. Specifications of programming languages were discussed from a design perspective. Foundations of Programming [Primer]Programming exercises in imperative, objectoriented and functional paradigms Today programming is done by people from all branches of engineering including end users. Are they doing good programming? What does good mean? Is programming same for computers, mobiles? This course is an attempt to teach foundations of programming as a three-part approach. Specification, Implementation and Verification of programs, supported with rigorous practice. In this course, programming will be introduced as a problem solving and an intellectual discipline. How does writing large programs differ? What does a program for Twitter look like? How do you write one? How to write programs with desirable qualities? Is it possible to learn programming without a programming language? Why is it critical to think of design before programming? and how to do co-design?Foundations of Software Engineering [Primer]Do you design software using an ad-hoc approach? How is design of software similar or different from design of electronic circuits or construction? This course proposes to teach basic foundations and essential constructs for design of software. The key goal of this course is to instill the notion of systematic software development and the necessary knowledge and skills early on to develop software. Students will learn systematic ways of developing software and apply these concepts towards developing reasonably complex software in a challenging project. Specifically, they will learn basics of requirements engineering, design methods, coding and testing techniques. The students will also learn and use version control, diagramming languages like UML, debugging and several tools to support their project. |