No description, website, or topics provided.
C Java Shell C++
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
dag Shift Wedding Problem into dp1/ Oct 26, 2011
dp1 Shift Wedding Problem into dp1/ Oct 26, 2011
dp2 Add notes for Lab #09 - Dynamic Programming 2 Oct 27, 2011
graph_traversal Graph Traversal Code Oct 25, 2011
mst Week 07 - Minimum Spanning Tree Sep 29, 2011
slides Add slides for Lab Wk5 - Graph Traversal Oct 25, 2011
uva Moved the solutions to the UVa problems to the folder uva Dec 9, 2011
.gitignore .gitignore: ignore .o files Sep 9, 2011
README Credit Shubham for solutions to UVa problems Dec 9, 2011



My name is Pang Yan Han. I am currently (September 2011) a second year
undergraduate at the National University of Singapore. I am a Computer Science
major specializing in Algorithms.


This repository contains code, slides and notes of my own creation for an
undergraduate module "CS2010 - Data Structures and Algorithms II", conducted at
the National University of Singapore in Academic Year 2011/2012, Semester 1,
where I was a lab TA.

Lab sessions take up 1 hour per week and are more of a "mini lecture" style than
"get your hands dirty" style.

My friend and colleague, Shubham Goyal, has kindly provided his solutions to
some UVa Online Judge problems we discussed in our lab sessions.


Taking into account the average results of the cohort taking the module, lab
sessions have to cover a select subset of the Java API used to solve the weekly
Problem Sets for the module.

However, I was unsatisfied doing that. I thought that the Java API was very
well documented, and did not require the full 1 hour lab to cover. Spending the
entire session covering the Java API may also douse the students' interest in

The recent news (as of late August 2011 to early September 2011) that the
School of Computing's premiere introductory programming module -
"CS1101S - Programming Methodology" - would be switching from using Scheme as a
teaching language to JavaScript from next year onwards - devastated me. 

I was seeing the soul of Computer Science being ripped out, as curriculums are
being dumbed down. Instead of having to go through concepts in SICP using
Scheme, people are using Python / Java which are arguably, not as good teaching
languages as Scheme. Instead of implementing data structures and algorithms in C
where one has to deal with pointers and is bound to get segmentation faults,
it's now done in Java, a language which does not have the concept of a pointer.

And right now, the same thing is happening right in front of my eyes.

And the worst part was that there was nothing I could do about it.

But I could do something about CS2010. I set out to cover extra things in the
lab session on top of what I was supposed to cover for the Java API part, which
led to the creation of this repository.

This was done with the approval of my Professor, Dr. Steven Halim. He kindly
accepted me and my colleague's (Shubham Goyal) proposal to cover extended
material during the weekly lab sessions.


As stated above, slides + code + notes of what I cover in lab sessions

In addition, solutions to some of the UVa Online Judge problems discussed
during our lab sessions can be found in the "uva" folder.

Many students specifically request more code for algorithms covered in the
module. So here they are!


I received a lukewarm response to this extended material coverage during labs.
Maybe students do not like to show their emotions? Nevertheless, I have learnt
a lot preparing the code (especially) and slides for each lab session.


This repository's code and slides are released under the MIT License.
See the COPYING file for more details.


Perhaps future tutors from CS1020, CS2010 and CS2020 can draw inspiration from
the content here. You are welcome to make use of the materials in this
repository in whatever way you want.

With regards to code, I will ensure a certain level of correctness and

However, understanding the code is your job.


I would like to thank my Professor, Dr. Steven Halim, for granting me the
permission to cover extended material during lab sessions. He has been a very
supportive mentor and inspired me to learn more about algorithms through the
creative use of UVa problems in CS2020, a similar algorithms module I took.

I would also like to thank my colleague, Shubham Goyal, who has been a great
help and friend to me. Without a colleague with similar motivations, I would
probably have less conviction in pushing this through.