Skip to content Skip to navigation

Computational Thinking - IS103

How is Computational Thinking
relevant to you?

What is Computational Thinking?

Computational thinking is about problem solving that uses fundamental concepts in computer science, such as abstraction, decomposition, recursion, heuristic reasoning, just to name a few. It can be used to algorithmically solve complex problems of scale, and is often used to realize large improvements in efficiency.


Who is it for?

Computational thinking is for everyone. Many problems in various domains, such as economics, finance, law, as well as the natural sciences are increasingly computational in nature. The course is open to all students in the university. There is no pre-requisite for the course. In the past, we have had students from almost all the schools in SMU. The course is also a foundation course for the 2nd Major in Analytics.

What is covered in the course?

The course equips students to tackle complex computational problems; it trains students to formulate problems in terms of computation, and to design solutions to those problems.

It draws upon concepts from mathematics and computer science – more precisely, discrete mathematics, data structures and algorithm design.

SEE THE SECTIONS ABOVE FOR INFORMATION RELEVANT TO YOU →

Computational thinking exposes you to different ways of solving computational problems, with an eye on elegance and efficiency.

Have you ever viewed compound interest as a recursive computation? Or risk management as probabilistic randomization? Or taxation rules as algorithms?

If you’re interested in developing a computational perspective of problems, join us in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“It was to my surprise that I have learned so much in computational thinking with no IS background knowledge. I am also impressed how CT could help me in data analysis, which is quite important in today’s working context. ... I do like this course and will definitely recommend this module to my friends to gain skills and insights from this course.”

XIA Zhongni
BAcc
Batch 2009

In April 2013, someone posted a fake tweet about an explosion in the White House, which triggered a mini-crash in a matter of minutes!

Some market experts attributed the speed of the reaction to high-frequency algorithmic trading. It is estimated that about half of all stock market trades in the US are executed not by human, but by computers using a set of advanced algorithms.

Ever wonder what an algorithm is? How could a computer “understand” a tweet and react? How does it do that so efficiently and react in seconds or fractions of a second?

If you’re curious about these questions and more, join us in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“In today’s information age, computer is an essential tool. Especially in the finance industry, where huge amount of data is processed by computer. Hence, translating problems into computational problems formally and fully utilizing computer’s power to solve problems effectively and efficiently is significant to us.

Computational Thinking is a good start-up for finance students. As a Quantitative Finance student, I do feel it as a useful course for me. ”

Qin Hao
BBM
Batch 2009

How do we match buyers and sellers in a market with no prices?

Consider the two-sided stable marriage problem. If there are an even number of men and women, can we always come up with a set of marriages where there are no two people of opposite sex who would both rather have each other than their current partners?

The solution to this problem has wide-ranging applications in the real world, such as matching students to schools, medical residents to hospitals, and organ donors and donees.

In 1962, economists David Gale and Lloyd Shapley devised an algorithm that provided the optimal solution(s) to this important problem. No wonder Shapley went on to become a co-winner of the 2012 Nobel Prize in Economics!

How does the algorithm work? How does it accomplish the matching as efficiently as possible? Who is it optimal for: the “men” or the “women”?

If you’re curious about these questions and more, join us in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“Computational thinking is one of the few modules that taught me skills which I can apply to the real world. Although it requires one to conceptualize rather than program, I have become more confident in coding out functions, not only in Ruby, but also in other languages such as Excel VBA. This is because the logic and ideas taught in the module can be applied into different programming languages with different syntaxes. It is definitely one of the most useful and applicable modules for all students to take.”

“Many can produce the right output, but few can do it efficiently. Be that few.”

Jerreme YEO
Double-degree BBM/ BSc(Economics)
Batch 2009

How does Google rank web pages that appear in search results?

The PageRank algorithm determines the importance of web pages by the way they are connected to one another through hyperlinks. If we think of links as votes, a page that links to another page is casting a vote for the latter. The number of votes a page has, and the quality of those votes, help determine the importance of the page.

Sounds simple enough. Yes, but there are tens of billions of pages, and this number is still growing.

Many times, IS professionals need to deal with complex problems like these that require processing a huge amount of data efficiently. Computational thinking exposes you to different ways to solve problems with an eye towards elegance and efficiency.

We look forward to have you in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“I thought this course would be quite dry because it is about algorithms, but it is actually quite interesting when we discuss real-life problems like “How do you pick the best bicycle route through 33 cities for the London Olympics? Before this course, I would have thought of generating every route (8 x 1036 of them) to compare, but this would take a lifetime to calculate, or a tremendous amount of computing resources. In this course, I learnt various algorithms that help me narrow the problem down to subsets of good solutions and solve it in a reasonable amount of time. ”

Tai Shi Ling
BSc (Information Systems)
Batch 2010

“I personally feel that computational thinking (IS103) is of vital importance to not only IS folks but also those from other majors. One can expect to learn the fundamentals of algorithm and leverage it in other courses such as CAT and SE [Software Engineering], which would otherwise be difficult to cope with. Thus, I strongly encourage students to enrol this course at the early stage, preferably year 1 or year 2.”

HUANG Ze Cheng
BSc (Information Systems)
Batch 2009

Half a million documents. Court-imposed deadline of one week.

How to identify documents relevant to the court-ordered discovery motion?

Each case cites a few other cases, which in turn cite many other cases. How to analyze these citation patterns for useful insights?

Facing such crucial problems of high complexity with extensive data sets, what would be your best strategy?

If you’re curious about these questions and more, join us in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“The biggest take-away I had for this course was probably getting to learn about the time-complexity of computational solutions. Through understanding the concept of complexity, I was able to see the elegance of solutions and algorithms that could scale well. Indeed, complexity is a recurring concept that underlies almost every part of the course. I also gained a deeper (and yet still superficial, given the introductory nature of the course) appreciation for intractable problems, and how heuristics can be used to break down seemingly complex problems.”

- Comment from a School of Law student

In 1967, a psychologist, Stanley Milgram, conducted a social experiment. He requested individuals from two US cities (Omaha and Wichita) to forward a packet to an addressee in Boston through people whom they knew. The average length of these chains of correspondences was six, giving rise to the famous term “six degrees of separation”.

Such social experiments shed light to how we interact with one another socially. How do new ideas, behaviors and products gain popularity and spread throughout the network? These are questions that are still relevant to social sciences today.

However, they are also computational questions. Social scientists need to deal with increasingly larger amounts of data on social interactions, employing algorithms and other computational tools to arrive at the answers.

If you’re interested in developing a computational perspective of problem solving, join us in IS103, where we will bring you through the thought process of solving problems using fundamental computational concepts.

Students' Testimonials

“It was to my surprise that I have learned so much in computational thinking with no IS background knowledge. I am also impressed how CT could help me in data analysis, which is quite important in today’s working context. ... I do like this course and will definitely recommend this module to my friends to gain skills and insights from this course.”

XIA Zhongni
BAcc
Batch 2009

The focus of the course is on concepts, and not on programming. However, to facilitate learning of the concepts in a hands-on manner, students will be exposed to tools such as Ruby programming language, and RubyLabs environment for computational experiments. There will be in-class demos and hands-on sessions of these tools.

We do not assume any programming experience. What students need to know will be taught in class progressively. In the first week, we begin with the basics of Ruby. Students then progress to running lab modules with instruction manuals. Eventually, students learn to modify existing code, and later on to write their own code.

See what students who took this course have to say

“Before taking IS103, I have never been exposed to programming in Ruby. To my pleasant surprise, it was really easy to pick up the language, and I would definitely recommend using Ruby to teach an introductory course to computer science. The language is relatively close to the English syntax (as compared to other more traditional programming languages) … One advantage of using Ruby is the Interactive Ruby Prompt that it provides, which allows students to have instant feedback after tinkering around with Ruby code. The “read-eval-print loop” programming environment is certainly more “learner-friendly” than the traditional “compiler” languages, as students are able to see the results of their coding much more quickly and easily. This in turn facilitates debugging and experimentation, which is essential to the learning process.”
- Comment from a School of Law student

The workload is average. It should be similar to most modules. How heavy or how light individual students find it depends on various factors, such as their prior background, level of interest, as well as other modules taken in the same term. We do note that this is a course that requires some degree of diligence and regular practice/revision, because later lessons build on the earlier ones.

See what students who took this course have to say

“The workload of this course is light in the beginning as topics are fairly straightforward. The earlier assignments could be finished in a few hours, but the last assignment involves more complicated concepts and took me days to figure out and refine. Overall, the workload is average compared to other courses.”
- Tai Shi Ling, School of Information Systems, AY 2012-2013 Term 1

“Although a lot of practice is required when it comes to learning a new programming language, I found the time allocated for practices in classes rather adequate. Thus, I only spent at most 1 hour a week outside of class on the module. This is far less than what I would spend on other modules (3-4 hours). Of course, I did have to spend more time on the module when there were assignments due for the week (3 assignments in total). On average, I spent 7-8 hours to complete non-programming assignments, and around 30 hours to complete the programming assignment (mini project). However, this is far less than the time I spent on some of my other modules, such as Computer as an Analysis Tool. Thus, I feel that this module is very manageable.”
- Jerreme Yeo, Double-degree BBM/ Bsc(Econs), AY 2012-2013 Term 1

We have not observed this to be the case. Students from non-IS degree programs have also done well in the course. The course is heavily analytical and conceptual in nature. While SIS students have some programming experience, Ruby itself is new to almost all students, including SIS students. For projects, we encourage non-IS students to group with other IS students.

No prerequisite has been set for this course.

Last updated on 20 Jul 2016 .