Research is cool, but teaching is truly meaningful. The
following is a summary of the classes that I teach, have taught in the past
or am going to teach in the next semester.
Teaching Summary:
- Teaching statement 2021
- Teaching statement 2018
- Teaching statement 2015
- Teaching statement 2012
- Teaching statement 2009
- Teaching statement 2006
(written before joining NUS)
- AY2023/2024, Sem 2: -- Teaching Break --
- AY2023/2024, Sem 1: CS2109S
(Tutorial only) |
Module Feedback |
Teaching
Feedback |
Analytics
- AY2023/2024, Sem 1: IT2900 |
Module Feedback |
Teaching
Feedback
- AY2022/2023, Special Sem: IT5502 |
Module Feedback |
Teaching
Feedback
- AY2022/2023, Sem 2: CS2109S |
Module Feedback |
Teaching
Feedback |
Analytics
- AY2022/2023, Sem 2: IT5501 |
Module Feedback |
Teaching
Feedback
- AY2022/2023, Sem 1: CS2109S |
Module Feedback |
Teaching
Feedback |
Analytics
- AY2022/2023, Sem 1: IT2900 |
Module Feedback |
Teaching
Feedback
- AY2021/2022, Sem 2: CS2109S |
Module Feedback |
Teaching
Feedback
- AY2021/2022, Sem 1: CS5229 |
Module Feedback |
Teaching
Feedback | Analytics
- AY2021/2022, Sem 1: IT2900 |
Module Feedback |
Teaching
Feedback
- AY2020/2021, Sem 2: CS2040S (Recitation
only) | Module Feedback |
Teaching
Feedback | Analytics
- AY2020/2021, Sem 1: CS1010S (Recitation
only) |
Module
Feedback |
Teaching Feedback |
Analytics
- AY2019/2020, Sem 2: CS2040S (Recitation
only) |
Module
Feedback |
Teaching Feedback |
Analytics
- AY2019/2020, Sem 2: CS1010S (Recitation
only) |
Module
Feedback |
Teaching Feedback
- AY2019/2020, Sem 1: CS3216 |
Module
Feedback |
Teaching
Feedback | Analytics
- AY2019/2020, Sem 1: CS1010S |
Module
Feedback |
Teaching
Feedback (L)
Teaching
Feedback (R)
- AY2018/2019, Sem 2: CS1010X |
Module
Feedback |
Teaching
Feedback (L) |
Teaching
Feedback (R) |
Analytics
- AY2018/2019, Sem 1: CS3216 |
Module
Feedback |
Teaching
Feedback | Analytics
- AY2017/2018, Sem 2: CS1010X |
Module
Feedback |
Teaching
Feedback | Analytics
- AY2017/2018, Sem 2: CS1010XCP(LLI) |
Module
Feedback |
Teaching
Feedback
- AY2017/2018, Sem 1: -- Teaching Break --
- AY2016/2017, Sem 2: CS1010X |
Module
Feedback |
Teaching
Feedback | Analytics
- AY2016/2017, Sem 1: FMC1206 |
Module
Feedback |
Teaching
Feedback
- Sichuan University Summer Course 2016:
Final Survey
- AY2015/2016, Sem 2: CS1010X |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2015/2016, Sem 1: -- Teaching Break --
- AY2014/2015, Sem 2: CS1010FC |
Module
Feedback |
Teaching
Feedback
- AY2014/2015, Sem 2: CP3101A
- AY2014/2015, Sem 2: CS1010S (Recitation only) |
Teaching Feedback
- AY2014/2015, Sem 1: CS1010S |
Module
Feedback |
Teaching
Feedback
- Sichuan University Summer Course 2014:
Final Survey
- AY2013/2014, Sem 2: CS1010FC |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2013/2014, Sem 2: CP3101A
- AY2013/2014, Sem 1: CS1010S |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2012/2013, Sem 2: CP3101A
- AY2012/2013, Sem 1: -- Teaching Break --
- AY2011/2012, Sem 2: CS3217 |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2011/2012, Sem 1: CS3216 |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2011/2012, Sem 1: CS1101S |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2010/2011, Sem 2: CS3217 |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2010/2011, Sem 1: CS1101S |
Midterm
Survey |
Module
Feedback |
Teaching
Feedback
- AY2009/2010, Sem 2: CS3216 |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2009/2010, Sem 1: CS1101S |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2008/2009, Sem 2: CS3216 |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2008/2009, Sem 1: CS1101S |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2007/2008, Sem 2: CS3216 |
Midterm Survey |
Module Feedback |
Teaching Feedback
- AY2007/2008, Sem 2: CS3243 |
Midterm Survey |
Module Feedback |
Teaching Feedback
- AY2007/2008, Sem 1: CS1101S |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2006/2007, Sem 2: CS3243 |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
- AY2006/2007, Sem 1: CS1101S |
Midterm Survey |
Module
Feedback |
Teaching
Feedback
Executive Teaching:
- Digital Disruptions and Public Policy Programme:
Teaching Papers/Reports:
- John DeNero, Sumukh Sridhara, Manuel Pérez-Quiñones, Aatish Nayak,
and Ben Leong. "Panel:
Beyond
Autograding: Advances in Student Feedback Platforms". In Proceedings
of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education
(SIGCSE '17). ACM, New York, NY, USA, 651-652. Mar 2017.
- "Application of Game Mechanics
to Improve Student Engagement" (with Luo Yanjie). International
Conference on Teaching and Learning in Higher Education (TLHE 2011).
Singapore. Dec 2011.
- "Using Technology in Teaching: Not a
Silver Bullet". Published in Technology in Higher Education: The State of Art. 2011.
- "Teaching Programming as
an Online Game" with Ali Razeen and Koh Zi Han [unpublished
manuscript], Sep 2011
- CS3216 Module Report, July 2008
Public Talks on Teaching:
- 28 May 2020 - 23rd SoC Teaching Seminar: "Transiting from
face-to-face teaching to online teaching"
- 25 May 2019 - Higher Education in a Disruptive Landscape: The State
and Future of STEM Education Symposium in Singapore: "Scaling up and
Innovating in Higher Education with Technology"
- 6 Dec 2017 - 18th SoC Teaching Luncheon: "Gamification:
Practical Lessons from a 7-Year Journey"
- 26 Oct 2017 - InnovJam Oct 2017 - Unlock Gamification: "Application
of Gamification to Improve Learner Engagement"
- 8 Mar 2017 - "Panel: Beyond Autograding: Advances in Student
Feedback Platforms". 2017 ACM SIGCSE Technical Symposium on Computer
Science Education (SIGCSE '17). New York.
- 22 Oct 2016 - "Application of Gamification to Improve Student
Engagement". SIM GE 6th Education Conference 2016.
- 1 Sep 2016 - "Technology-Enhanced Learning Experience in Asia – A
Highlight on Coursemology". 8th Annual Higher Education Summit 2016.
- 26 Aug 2016 - CDTL Workshop: "Facilitating a Virtual Class using
WebEx"
- 7 Jul 2016 - Talk@Sichuan University: Recent Innovations in
Undergraduate Teaching
- 3 Jun 2016 - IAL IN.Lab : Gamification: Sustaining Learner
Engagement
- 2 Jun 2016 - "Application of Gamification to Improve Student
Engagement". #define the
Future Conference 2016
- 12 Apr 2016 - "Coursemology: A Gamified Learning Management
Platform". 2nd Global Learning Council Symposium on “Technology-Enhanced
Learning in Asia"
- 22 Mar 2016 - CDTL Workshop: "Facilitating a Virtual Class using
WebEx"
- 8 Mar 2016 - SAF Learning Day@SAFTI: "Innovation in Teaching &
Learning"
- 18 Feb 2016 - CDTL Workshop: "Facilitating a Virtual Class using
WebEx"
- 13 Oct 2015 - "Coursemology: Improving Student Engagement with
Gamification". 1st Workshop on Technology for Teaching at Scale.
- 10 Jul 2015 - Xinmin Secondary School: Flipped Classroom Teaching
- 26 May 2015 - MOE EduLab : Gamifying Online Learning
- 4 May 2015 - Outstanding Educator Award Public Lecture 2015: The
Pragmatic Ideology in Teaching
- 13 Mar 2015 - Singapore Institute of Technology: Gamification &
Online Teaching
- 2 Jul 2014 - Talk@Sichuan University: Teaching Innovations at the
NUS School of Computing, WebEx Demo
- 16 Jun 2014 - Talk@NUS Business School: Going Virtual: Video
Recording & Flipped Classroom
- 28 May 2014 - Talk@NUS Business School: Application of Game
Mechanics to Improve Student Engagement
- 14 May 2014 - 11th SoC Teaching Luncheon: Going Virtual: Classrooms
in the Cloud, WebEx Demo
- 15 Apr 2014 - InnovFest: Gamification for Improved Student
Engagement
- 30 Oct 2013 - NUS-China-India Workshop: Gamification for Improved
Student Engagement
- 13 Sep 2013 - SoC Faculty Retreat: Technology-Enhanced Learning
- 25 July 2013 - Talk@TJC: Coursemology.org: Gamification Platform for
Education
- 16 Jan 2013 - Talk@Coursera: Gamification in Education: Our
Experience at NUS
- 8 Nov 2012 - CDTL Technology in Pedagogy: Gamification: How to Do It
Right & Why It Is No Good
- 1 Jun 2012 - "Gamification - How to do it Right and Why it is No
Good" 2nd Jurong Secondary School Redefining Learning Symposium 2012.
- 9 May 2012 - 7th SoC Teaching Luncheon: Teaching like a Director.
- 8 Dec 2011 - "Application of Game Mechanics to Improve Student
Engagement". International Conference on Teaching and Learning in Higher
Education (TLHE 2011). Singapore.
- 9 Dec 2009 - 2nd SoC Teaching Luncheon: Harnessing Undergraduate
Talent for Teaching.
2023/2024
Semester 1: CS2019S -Introduction to AI and Machine Learning
This module introduces basic concepts in Artificial Intelligence (AI) and
Machine Learning (ML). It adopts the perspective that planning, games, and
learning are related types of search problems, and examines the underlying
issues, challenges and techniques. Planning/games related topics include
tree/graph search, A* search, local search, and adversarial search (e.g.,
games). Learning related topics include supervised and unsupervised
learning, model validation, and neural networks.
Assessment Scheme:
- 30% Problem Sets (CA)
- 10% Mini-Project
- 30% Midterm Assessment
- 30% Final Assessment (Practical)
2023/2024
Semester 1: IT2900 - Technical Management and Leadership
In today’s complex and rapidly evolving business landscape, technical
leaders require both leadership and soft skills to deliver high-quality
product and drive innovation. In this module, students will be introduced to
foundational theories of leadership and management. Students will develop
self-awareness, emotional intelligence, resilience, perspective-taking,
empathy and conflict management skills. They will also learn about the
importance of psychological safety in teams. Students can expect readings,
class presentations, interactions with guest speakers as well as participate
in facilitated discussions and self-reflection exercises.
2022/2023
Semester 2: CS2019S -Introduction to AI and Machine Learning
This module introduces basic concepts in Artificial Intelligence (AI) and
Machine Learning (ML). It adopts the perspective that planning, games, and
learning are related types of search problems, and examines the underlying
issues, challenges and techniques. Planning/games related topics include
tree/graph search, A* search, local search, and adversarial search (e.g.,
games). Learning related topics include supervised and unsupervised
learning, model validation, and neural networks.
Assessment Scheme:
- 30% Problem Sets (CA)
- 10% Mini-Project
- 30% Midterm Assessment
- 30% Final Assessment (Practical)
2022/2023
Semester 1: CS2019S -Introduction to AI and Machine Learning
This module introduces basic concepts in Artificial Intelligence (AI) and
Machine Learning (ML). It adopts the perspective that planning, games, and
learning are related types of search problems, and examines the underlying
issues, challenges and techniques. Planning/games related topics include
tree/graph search, A* search, local search, and adversarial search (e.g.,
games). Learning related topics include supervised and unsupervised
learning, model validation, and neural networks.
Assessment Scheme:
- 30% Problem Sets (CA)
- 10% Mini-Project
- 30% Midterm Assessment
- 30% Final Assessment (Practical)
2022/2023
Semester 1: IT2900 - Technical Management and Leadership
In today’s complex and rapidly evolving business landscape, technical
leaders require both leadership and soft skills to deliver high-quality
product and drive innovation. In this module, students will be introduced to
foundational theories of leadership and management. Students will develop
self-awareness, emotional intelligence, resilience, perspective-taking,
empathy and conflict management skills. They will also learn about the
importance of psychological safety in teams. Students can expect readings,
class presentations, interactions with guest speakers as well as participate
in facilitated discussions and self-reflection exercises.
2021/2022
Semester 2: CS2019S -Introduction to AI and Machine Learning
This module introduces basic concepts in Artificial Intelligence (AI) and
Machine Learning (ML). It adopts the perspective that planning, games, and
learning are related types of search problems, and examines the underlying
issues, challenges and techniques. Planning/games related topics include
tree/graph search, A* search, local search, and adversarial search (e.g.,
games). Learning related topics include supervised and unsupervised
learning, model validation, and neural networks.
Assessment Scheme:
- 30% Problem Sets (CA)
- 10% Mini-Project
- 30% Midterm Assessment
- 30% Final Assessment
2021/2022
Semester 1: CS5229 - Advanced Computer Networks
This module covers advanced fundamental principles of computer networks
and techniques for networking. The goal of this course is to teach these
fundamentals/techniques that will remain important and relevant regardless
of the hot topics in networks and networking. Briefly, the topics include
advanced network architecture and design principles, protocol mechanisms,
implementation principles and software engineering practices, network
algorithmic, network simulation techniques and tools, performance analysis
and measurement, and protocol specification/verification techniques.
Assessment Scheme:
- 15% Online quizzes
- 25% Programming assignments
- 30% Term Project
- 30% In-Class Assessment
2021/2022
Semester 1: IT2900 - Technical Management and Leadership
In today’s complex and rapidly evolving business landscape, technical
leaders require both leadership and soft skills to deliver high-quality
product and drive innovation. In this module, students will be introduced to
foundational theories of leadership and management. Students will develop
self-awareness, emotional intelligence, resilience, perspective-taking,
empathy and conflict management skills. They will also learn about the
importance of psychological safety in teams. Students can expect readings,
class presentations, interactions with guest speakers as well as participate
in facilitated discussions and self-reflection exercises.
2020/2021
Semester 2: CS2040S - Data Structures and Algorithms
This module introduces students to the design and implementation of
fundamental data structures and algorithms. The module covers basic data
structures (linked lists, stacks, queues, hash tables, binary heaps, trees,
and graphs), searching and sorting algorithms, and basic analysis of
algorithms.
Assessment Scheme:
- 30% Problem Sets
- 25% Midterm Test
- 10% Tutorial Participation
- 35% Final Exam
2020/2021 Semester 1: CS1010S - Programming Methodology
This module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010 and CS1010E
Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion. This
module is appropriate for FoS students.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2019/2020
Semester 2: CS2040S - Data Structures and Algorithms
This module introduces students to the design and implementation of
fundamental data structures and algorithms. The module covers basic data
structures (linked lists, stacks, queues, hash tables, binary heaps, trees,
and graphs), searching and sorting algorithms, and basic analysis of
algorithms.
Assessment Scheme:
- 30% Problem Sets
- 25% Midterm Test
- 10% Tutorial Participation
- 35% Final Exam
2019/2020 Semester 2: CS1010S - Programming Methodology
This module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010 and CS1010E
Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion. This
module is appropriate for FoS students.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2019/2020
Semester 1: CS3216 - Software Product Engineering for Digital Markets
In the module, students will learn how to design and develop software
applications for startups and more. Basically, it is a crash course on how
to bring (digital) product to market.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing applications. The teams will then present their findings
to their classmates during a seminar in the middle of the course.
Assessment Scheme:
- 15% Product Design Assignment
- 15% Mobile-Cloud Application Assignment
- 10% Seminar Presentation
- 10% Participation
- 50% Final Project
2019/2020 Semester 1: CS1010S - Programming Methodology
This module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010 and CS1010E
Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion. This
module is appropriate for FoS students.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2018/2019 Semester 2: CS1010X - Programming Methodology
This is a half-online module that will be offered to NSmen who will
matriculate at NUS in Aug 2019. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2018/2019
Semester 1: CS3216 - Software Product Engineering for Digital Markets
In the module, students will learn how to design and develop software
applications for startups and more. Basically, it is a crash course on how
to bring (digital) product to market.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing applications. The teams will then present their findings
to their classmates during a seminar in the middle of the course.
This course has had a long history and has been training the best
software engineers at SoC for the past decade. :-)
Assessment Scheme:
- 15% Product Design Assignment
- 15% Mobile-Cloud Application Assignment
- 10% Seminar Presentation
- 10% Participation
- 50% Final Project
2017/2018 Semester 2: CS1010X - Programming Methodology
This is formerly CS1010FC and is a half-online module that will be offered to NSmen
who will matriculate at NUS in Aug 2018. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2016/2017 Semester 2: CS1010X - Programming Methodology
This is formerly CS1010FC and is a half-online module that will be offered to NSmen
who will matriculate at NUS in Aug 2017. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2016/2017 Semester 2:
FMC1206 - Freshman Seminar: Computing for a Better World
This is the official module description: "Poverty, energy, disease,
and environment are a few of the grand challenges that humanity faces today.
Computing, being a field that underlies modern sciences, plays an important
role in addressing these challenges. This module aims to expose students to
how computing is used to tackle these and other grand challenges faced by
humanity. Topics depend on the latest scientific development. Example topics
include the use of computing to facilitate efficient farming, monitor the
environments, simulate climate change, sequence genome, detect pandemic
outbreak, and search for a cure for diseases. This module will be graded as
"Completed Satisfactory/Completed Unsatisfactory (CS/CU)"."
Probably won't be doing exactly what is said in the module description --
but it probably doesn't matter. The only part that is likely true is the
S/U.
2015/2016 Semester 2: CS1010X - Programming Methodology
This is formerly CS1010FC and is a half-online module that will be offered to NSmen
who will matriculate at NUS in Aug 2016. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2014/2015 Semester 2: CP3101A -
Global Open Source Project
This module is a part of an experimental global software engineering
education initiative spearheaded by Stanford/Facebook called
Facebook Open Academy.
Student teams will be associated with a select group of open source software
projects. These projects are characterized by being active in both
development and utilization as well as being open to new and relatively
inexperienced committers. They are also projects that are deemed to be
relevant in today's software ecosystem. We also believe there is value in
seeding awareness of how to contribute to open source projects like these
among future technology leaders. Ideally there will also be some value from
the development work that student teams contribute back to the projects as
well.The students in this course will visit Facebook to attend a
hackathon at Facebook HQ in Menlo Park as the kick off event in Feb 2015. At this hackathon,
they had the opportunity to meet their teammates from partner universities
and also the mentors for the open source projects.
2014/2015 Semester 2: CS1010FC - Programming Methodology
This is an experimental half-online module that will be offered to NSmen
who will matriculate at NUS in Aug 2015. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2014/2015 Semester 1: CS1010S - Programming Methodology
This module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010 and CS1010E
Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion. This
module is appropriate for FoS students.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2013/2014 Semester 2: CS1010FC - Programming Methodology
This is an experimental half-online module that will be offered to NSmen
who will matriculate at NUS in Aug 2014. The module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010, CS1010S and
CS1010E Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2013/2014 Semester 2: CP3101A -
Global Open Source Project
This module is a part of an experimental global software engineering
education initiative spearheaded by Stanford/Facebook, that involves 25
schools globally, called
2013/2014 Semester 1: CS1010S - Programming Methodology
This module introduces the fundamental concepts of problem solving by
computing and programming using Python. It is the first and foremost
introductory course to computing and is equivalent to CS1010 and CS1010E
Programming Methodology. Topics covered include problem solving by
computing, writing pseudo-codes, basic problem formulation and problem
solving, program development, coding, testing and debugging, fundamental
programming constructs (variables, types, expressions, assignments,
functions, control structures, etc.), fundamental data structures: arrays,
strings and structures, simple file processing, and basic recursion. This
module is appropriate for FoS students.
Assessment Scheme:
- 35% Coursemology missions
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
2012/2013 Semester 2: CP3101A -
Global Open Source Project
This module is a part of an experimental global software engineering
education initiative spearheaded by Stanford/Facebook.
Student teams will be associated with a select group of open source software
projects. These projects are characterized by being active in both
development and utilization as well as being open to new and relatively
inexperienced committers. They are also projects that are deemed to be
relevant in today's software ecosystem. We also believe there is value in
seeding awareness of how to contribute to open source projects like these
among future technology leaders. Ideally there will also be some value from
the development work that student teams contribute back to the projects as
well.The students in this course were funded by Facebook to attend a
hackathon at Facebook HQ in Menlo Park as the kick off event. At this
hackathon, they had the opportunity to meet their teammates from partner
universities and also the mentors for the open source projects. In this
first year of this project course, the partner universities are:
- Stanford
- MIT
- University of Texas, Austin
- Cornell University
- Tokyo University
- University of Sichuan
- University of Helsinki
- Tampere University of Technology
- Imperial College of London
- Jagiellonian University
2011/2012 Semester 2: CS3217 -
Software Engineering on Modern Application Platforms
This is the first module of a two-part series on the practice of software
engineering on modern application platforms (together with CS3216) such as
mobile devices, the Web and cloud systems. Students will work in small
project teams to develop well-tested, production-quality software.
This first part focuses on building core software engineering skills and
competencies in programming modern application platforms. It also trains
students to work well in project teams. Students will be assessed on both
their individual programming competencies and their software engineering
skills in a final team project.
This semester the students will be learning Objective-C to program iOS
applications.
Assessment Scheme:
- 50% Individual Assignments
- 50% Final Project
2011/2012
Semester 1: CS3216 - Software Development on Evolving Platforms
In the module, students will learn to create next generation Internet
applications for mobile, social media and cloud platforms. For this semester, the target platforms are
Facebook
and iOS and AWS.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing Facebook applications. The teams will then present their findings
to their classmates during a seminar in the middle of the course.
Assessment Scheme:
- 15% Facebook Application Assignment
- 15% Mobile-Cloud Application Assignment
- 10% Seminar Presentation
- 10% Participation
- 50% Final Project
2011/2012 Semester 1: CS1101S - Programming Methodology (Scheme)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic strategies,
higher-order functions, state mutation, evaluation strategies, debugging and
testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
Students will
learn Scheme in CS110S and are then expected to move on to Java in CS2020. Java is introduced at
the end of CS1101S to help bridge between Scheme and Java.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 35% JFDI Academy
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
My slides for the Scheme Workshop for 2011/2012 Sem 1, are
here. The Scheme Workshop is
a short talk to help First Year students decide between CS1101 and the introductory programming CS1010 (which is taught in C).
2010/2011 Semester 2: CS3217 -
Software Engineering on Modern Application Platforms
This is the first module of a two-part series on the practice of software
engineering on modern application platforms (together with CS3216) such as
mobile devices, the Web and cloud systems. Students will work in small
project teams to develop well-tested, production-quality software.
This first part focuses on building core software engineering skills and
competencies in programming modern application platforms. It also trains
students to work well in project teams. Students will be assessed on both
their individual programming competencies and their software engineering
skills in a final team project.
This semester the students will be learning Objective-C to program iOS
applications.
Assessment Scheme:
- 50% Individual Assignments
- 50% Final Project
2010/2011 Semester 1: CS1101S - Programming Methodology (Scheme)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic strategies,
higher-order functions, state mutation, evaluation strategies, debugging and
testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
Students will
learn Scheme in CS110S and are then expected to move on to Java in CS2020. Java is introduced at
the end of CS1101S to help bridge between Scheme and Java. We introduced a
new game-based assignment system called
JFDI Academy this Semester.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 35% JFDI Academy
(assignments)
- 15% Midterm Exam
- 15% Practical Exam
- 5% Tutorial Participation
- 30% Final Exam
My slides for the Scheme Workshop for 2010/2011 Sem 1, are
here. The Scheme Workshop is
a short talk to help First Year students decide between CS1101 and the new
introductory programming CS1010 (which is taught in C).
2009/2010
Semester 2: CS3216 - Software Development on Evolving Platforms
In the module, students will learn to create Internet applications on the
latest social networking platforms. For this semester, the target platforms are
Facebook
and Google Wave.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing Facebook applications. The teams will then present their findings
to their classmates during a seminar in the middle of the course.
Assessment Scheme:
- 15% Facebook Application Assignment
- 15% Google Wave Assignment
- 10% Seminar Presentation
- 10% Participation
- 50% Final Project
2009/2010 Semester 1: CS1101S - Programming Methodology (Scheme)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. It is the first of a two part series on
introductory programming, which also includes CS1102S. This series is
characterized by the use of a minimalist syntax of functional languages that
enables an emphasis on fundamental programming issues. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic strategies,
higher-order functions, state mutation, evaluation strategies, debugging and
testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
This is part one of a CS1101S/CS1102S series of modules. Students will
learn Scheme in CS110S and then Java in CS1102S. Java is introduced at
the end of CS1101S to help bridge between Scheme and Java.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 30% Problem Sets
- 15% Midterm Exam
- 15% Practical Exam
- 10% Tutorial Participation
- 30% Final Exam
My slides for the Scheme Workshop for 2009/2010 Sem 1, are
here. The Scheme Workshop is
a short talk to help First Year students decide between CS1101 and CS1101S.
2008/2009 Semester 2: CS3216 - Software Development
on Evolving Platforms
In the module, students will learn to create Internet applications on
the latest social networking platforms. For this semester, the target
platforms are Facebook and Microsoft
WPF. It is
conceivable that new platforms like
Google OpenSocial,
Adobe AIR and Google Gears
might be adopted in future semesters.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing Facebook applications. The teams will then present their findings
to their classmates during a seminar in the middle of the course.
Assessment Scheme:
- 20% Facebook Application Assignment
- 20% WPF Assignment
- 10% Seminar Presentation
- 10% Participation
- 40% Final Project
2008/2009 Semester 1: CS1101S - Programming Methodology (Scheme)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. It is the first of a two part series on
introductory programming, which also includes CS1102S. This series is
characterized by the use of a minimalist syntax of functional languages that
enables an emphasis on fundamental programming issues. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic strategies,
higher-order functions, state mutation, evaluation strategies, debugging and
testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
This is part one of a CS1101S/CS1102S series of modules. Students will
learn Scheme in CS110S and then Java in CS1102S. Java is introduced at
the end of CS1101S to help bridge between Scheme and Java.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 30% Problem Sets
- 15% Midterm Exam
- 15% Practical Exam
- 10% Tutorial Participation
- 30% Final Exam
My slides for the Scheme Workshop for 2008/2009 Sem 1, are
here. The Scheme Workshop is
a short talk to help First Year students decide between CS1101 and CS1101S.
2007/2008 Semester 2: CS3216 - Software Development
on Evolving Platforms
In this module, students will learn to create Internet applications on
the latest social networking platforms. For this semester, the target
platform is Facebook. It is
conceivable that new platforms like
Google OpenSocial
might be adopted in future semesters.
This experiential programming module involves extensive hands-on learning
in small team projects. Students are expected to work independently in
small, interdisciplinary teams to design, develop, and deploy new
applications. Students will also have the opportunity to explore the latest
Internet programming APIs and open-source tools.
Students will also work together in small teams to study and critique
existing Facebook applications. The teams will then present their findings
to their classmates during weekly seminars in the middle of the course.
Assessment Scheme:
- 10% Assignment 1: Hello World
- 15% Assignment 2: Wall
- 15% Assignment 3: Throw a Cow
- 10% Seminar Presentation
- 10% Participation
- 40% Final Project
The slides for the info session that was held can be found
here.
2007/2008 Semester 2: CS3243 - Foundations of
Artificial Intelligence
The module introduces the basic concepts in search and knowledge
representation as well as to a number of sub-areas of artificial
intelligence. It focuses on covering the essential concepts in AI. The
module covers Turing test, blind search, iterative deepening, production
systems, heuristic search, A* algorithm, minimax and alpha-beta procedures,
predicate and first-order logic, resolution refutation, non-monotonic
reasoning, assumption-based truth maintenance systems, inheritance
hierarchies, the frame problem, certainly factors, Bayes’ rule, frames and
semantic nets, planning, learning, natural language, vision, and expert
systems and LISP.
Assessment Scheme:
- 15% Midterm Project
- 20% Midterm Exam
- 25% Final Project
- 10% Tutorial Participation
- 30% Final Exam
2007/2008 Semester 1: CS1101S - Programming Methodology (Scheme)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. It is the first of a two part series on
introductory programming, which also includes CS1102S. This series is
characterized by the use of a minimalist syntax of functional languages that
enables an emphasis on fundamental programming issues. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic strategies,
higher-order functions, state mutation, evaluation strategies, debugging and
testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
This is part one of a CS1101S/CS1102S series of modules. Students will
learn Scheme in CS110S and then Java in CS1102S. JavaScript is introduced at
the end of CS1101S to help bridge between Scheme and Java.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 30% Problem Sets
- 15% Midterm Exam
- 15% Practical Exam
- 10% Tutorial Participation
- 30% Final Exam
My slides for the Scheme Workshop for 2007/2008 Sem 1, are
here. The Scheme Workshop is
a short talk to help First Year students decide between CS1101 and CS1101S.
2006/2007 Semester 2: CS3243 - Foundations of
Artificial Intelligence
The module introduces the basic concepts in search and knowledge
representation as well as to a number of sub-areas of artificial
intelligence. It focuses on covering the essential concepts in AI. The
module covers Turing test, blind search, iterative deepening, production
systems, heuristic search, A* algorithm, minimax and alpha-beta procedures,
predicate and first-order logic, resolution refutation, non-monotonic
reasoning, assumption-based truth maintenance systems, inheritance
hierarchies, the frame problem, certainly factors, Bayes’ rule, frames and
semantic nets, planning, learning, natural language, vision, and expert
systems and LISP.
Assessment Scheme:
- 15% Midterm Project
- 20% Midterm Exam
- 25% Final Project
- 10% Tutorial Participation
- 30% Final Exam
2006/2007 Semester 1: CS1101S - Programming Methodology (Scheme)
(co-taught with Razvan Voicu)
This module introduces the concepts of programming from a
functional perspective, and is perceived as the first and foremost
introductory course to computing. It is the first of a two part series on
introductory programming, which also includes CS1102S. This series is
characterized by the use of a minimalist syntax of functional languages that
enables an emphasis on fundamental programming issues. Topics covered
include: recursion, procedural abstraction, data abstraction, algorithmic
strategies, higher-order functions, state mutation, evaluation strategies,
debugging and testing. Module activities include lectures, recitation, group discussion
and laboratory exercises.
This module is based on the MIT introductory software engineering class
6.001: Structure and Interpretation of
Computer Programs.
Assessment Scheme:
- 25% Problem Sets
- 15% Midterm Exam
- 10% Practical Exam
- 10% Tutorial Participation
- 40% Final Exam