Friday, December 4, 2015

Module Review: 2015/2016 Semester I

Note: Please note that there might be differences between modules in semester 1 and semester 2

======================================================
======================================================

CS3103 - 3D Modeling and Animation (4 MC) (No Exam*)
Heavy emphasis on lab and hands-on rather than theory. On the notion of learning vs. grade, this module focused on learning. This module was a continuation of CS2105 and touched on many topics discussed on CS2105, so be prepared to refresh your memory. This was the first time the new curriculum of CS3103 is conducted, so many things might change in the future. Focused a lot on the different protocol being used currently. While no exam was registered on the module, there was a final test on Week 13.
Workload: weekly pre-lab quiz (graded) x10 (tentatives as some weeks have the quiz not counted towards grade), weekly lab (graded) x10, 1 written assignment, 1 programming assignment, 1 programming project - with presentation on Week 13, 1 final test.

CS4226 - Internet Architecture (4 MC) (Closed Book Exam - Cheat-sheet allowed)
The first time this module was conducted (again, many things might change in the future). It's also another module which focused more on learning new things rather than getting your grades. The teacher said that if CS3103 focuses on depth (of network), this module focuses on breadth. We touches on many parts of network other than protocols, such as algorithms and statistics behind making a reliable network.
Workload: 1 written assignment, 1 programming assignment, 1 mid-term exam, 1 final exam. Both exams allow 1 two-sided A4 paper size cheatsheet.

CS4345 - General-Purpose Computation on GPU (4 MC) (Open Book Exam)
An interesting module. This mostly touched on parallel programming and executing them in GPU. The programming assignments are not very difficult since the skeleton codes covered most of the tedious things to be coded. This was an interesting module to me since I have not taken any parallel programming module. Be minded that if you are not used to parallel programming, this module requires a mindset change in writing your algorithms.
Workload: 4 programming assignments, 1 mid-term exam, 1 final exam

Total MC - Sem 7     : 12
Total MC - Sem 6     : 20
Total MC - Sem 5     : 20
Total MC - Sem 4     : 12 (ATAP, i.e. industrial attachment)
Total MC - Sem 3     : 20
Total MC - Sem 2     : 26
Total MC - Sem 1     : 20
Total MC - Overall    : 130

Sunday, September 13, 2015

Using Fitness Bands for Health Monitoring

There are so many fitness bands right now, and many of them are able to track sleep and such. Given their capability to do so, I wonder if it is possible to extend it for health monitoring. And by this, I mean for acute patients. For example, using the band to differentiate whether the person is conscious or not, whether the person is sleeping or fainting. The band can also be used to know if the person has seizure. It can then be used to see the patter of those events happening.

Wednesday, August 19, 2015

Module Review: 2014/2015 Semester II

Note: Please note that there might be differences between modules in semester 1 and semester 2

======================================================
======================================================

CS3242 - 3D Modeling and Animation (4 MC) (Open Book Exam)
A more advanced course on 3D graphics. The course involves learning many advanced techniques. The programming assignments are also about those advanced techniques. Luckily, the exam is not that hard. Most of the things taught in lecture are for knowledge purpose. A very good course for those who would like to do graphic programming.
Workload: 2 programming assignments, 2 Maya (3D stuffs) assignments and 1 final exam (open book).

CS3284 - Media Technology Project II (4 MC) (No Exam)
A continuation to CS3283. It will be the same project. The goal of this module, though, is formal introduction to software engineering workflow. It will focus on making robust code, secure code, unit testing, integration testing, stress testing as well as security testing of your software. It is a very good learning experience for those who have not done this kind of full course of software development (the furthest I have been before the module was integration testing).
Workload: 3 progress reports regarding the software with each adding on to the previous reports and 1 final presentation.

CS3247 - Game Development (4 MC) (Open Book Exam)
To be honest, I hated the first half of the semester. I learnt all of them on my own during my weekend in the first 2 years of university, so technically they are not necessary to be taught as we should be able to figure out on our own. And most of us inside the class have some sort of game development experience, usually as a hobby. More of the time could have been used for developing the game project. The second half of the semester was more interesting since we learnt many things about the theory part of the game, like how the physics simulation is done, network gaming, etc. Be warned, though; the course assignments are not exactly fixed as they changed along the semester for my batch.
Workload: 3 assignments, many deliverables (game idea, mid-term game report, STePS publicity (SoC project exhibition)), a game, a final presentation about the game and 1 final exam.

ST2334 - Probability and Statistics (4 MC) (Closed Book Exam - Cheat-sheet allowed)
A deep look into the math behind Statistic that we see in A-level. Many calculus involved. While the content is very hard, the exam is manageable.
Workload: 1 assignment and 1 final exam (closed book with cheat-sheet, 1 two-sided A4 paper).

GEK1519 - Science of Music (4 MC) (Open Book Exam)
A very interesting module about science of music (as the course title suggests). A good module if you have a passion for music as it taught you what happens behind sounds. Be prepared for some Physics (wave and such).
Workload: 1 writing assignment on a musical concert, 1 music composition assignment, 1 mid-term exam (open book), 1 final exam (open book) that is held before school ends.

Total MC - Sem 6     : 20
Total MC - Sem 5     : 20
Total MC - Sem 4     : 12 (ATAP, i.e. industrial attachment)
Total MC - Sem 3     : 20
Total MC - Sem 2     : 26
Total MC - Sem 1     : 20
Total MC - Overall    : 118

Thursday, May 7, 2015

Gesture using phone frame

ZTE Nubia Z9 as seen from http://www.gsmarena.com/zte_nubia_z9_is_official_with_bezelless_display-news-12173.php has interesting concept of making the phone frame interactive. Now, let's wait for a company to make something like my idea so that we can have trigger button for games on phones.

Sunday, March 15, 2015

Female 3D Model


Something I created for 3D Modelling assigment. Too bad the face is bad :( I need more experience.

Saturday, February 14, 2015

Module Review: 2014/2015 Semester I

Note: Please note that there might be differences between modules in semester 1 and semester 2

======================================================
======================================================

CS3241 - Computer Graphics (4 MC) (Open Book Exam)
A very good module to learn about graphics in computer - how pictures and 3D model are rendered, ways to manipulate them, etc. The Prof. is very fun and friendly, especially that he likes to play games and we watch many videos on games and animated films to see the different quality of graphics. The programming assignments help me to familiarize some graphic concepts, which is awesome since that is the area of my interest.
Workload: graded weekly tutorial attendance, required to present answers on tutorial for once or twice (depending on luck) throughout the semester, 5 programming assignments, 1 mid-term exam (open book) and 1 final exam (open book).

CS3283 - Media Technology Project I (4 MC) (No Exam)
This module really depends on your project. It is a software engineering project. My team is doing a game from scratch with no scope of project. As such, we had some difficulty in constraining the scope to fit both the aim of the project as well as the requirement of the module. Also, it was difficult to apply software engineering practices in the game. Other than that, the module would be a good exposure for you to understand how software is built for clients (yes, you need to meet the project client).
Workload: 3 progress reports regarding the software with each adding on to the previous reports and 1 final presentation.

PC1431 - Physics IE (4 MC) (Closed Book Exam)
Classical Physics for engineers. Most of the people in the class would be engineering freshman. Bell curve will save you a lot, but you do need to spend time reading physics and trying the questions. Many contents are in A-level syllabus, either deeper or more rigorous. Quite manageable.
Workload: 8 weekly online assignments, 2 labs - graded based on project and viva (on-lab face-toface Q&A session), 1 mid-term exam (closed book, MCQ only) and 1 final exam.

SSA2220 - Global Economic Dimensions of Singapore (4 MC) (Closed Book Exam)
Interesting history of Singapore as well as her economy. Also deals a lot with economic policy in Singapore. Requires some news reading on new policies. I flunked my final exam, since I am not that good with essay writing exam. Individual and group presentation is quite easy, need to think a little bit but it is very manageable.
Workload: 1 individual presentation, 1 group presentation and 1 final exam (closed book).

GEM2901 - Reporting Statistics in the Media (4 MC) (Closed Book Exam)
My advice would be to the attend lectures. It was 8 am lecture no webcast - tough choice. I skipped one too many and in the end quite difficult to understand the content of the module. The lecture notes are not sufficient in terms of clear explanation. The two group projects are kind of similar and you are encouraged to do both of them together. Group projects need some knowledge from the lectures, but otherwise doable.
Workload: 2 group projects and 1 final exam (closed book).

Total MC - Sem 5     : 20
Total MC - Sem 4     : 12 (ATAP, i.e. industrial attachment)
Total MC - Sem 3     : 20
Total MC - Sem 2     : 26
Total MC - Sem 1     : 20
Total MC - Overall    : 98

Saturday, January 31, 2015

Risotto Attempt #1

So I tried to cook risotto without butter and cheese, to try how it tastes like. Of course, this is only my second time cooking (i.e. first time cooking risotto) and my first was edible (if you know what I mean).

Well, not so bad since the risotto was edible, although I notice some things. Firstly, use hot (or at least room temperature) stock. I used one from the fridge and it makes the creamy texture to come out very slowly and very little. Secondly, butter and cheese would add the risotto flavor, so don't remove them.


I used beef stock which is why it is brown. Taste quite good!

Tuesday, December 2, 2014

Capacitive Side Buttons on Smartphone

Yeay! Someone actually thinks like me! From the news at http://www.ubergizmo.com/2014/12/the-mantra-x7-is-a-phone-that-does-away-with-physical-buttons/, seems that there are people thinking like me and able to actualize the idea! Here was what I wrote on the idea of using capacitive panel for side buttons: http://hansccwolf.blogspot.sg/2012/09/new-smartphone-concept-capacitive-side.html. Let's see how the execution goes!

Thursday, October 9, 2014

Sunday, October 5, 2014

My First Time Building PC


Building PC looks like Lego + Gundam, but from my experience, I want to share some advice.

I like smaller cases. Everyone told me it will give you trouble fixing the parts, and boy I must agree. But I can take that. What made me stressful was following the chassis instructions. PSU first, then motherboard, then ODD and HDD, then expansion cards (in my case, chassis fans were already installed). What is not put in there is plugging cable. And yes, that is a nightmare. One advice is that you don't need to put PSU first; you can put motherboard first, plug some cables then put PSU in. In such a small case, the PSU is on the way of the cable pins (lucky I have small fingers, so some left out cables could easily be sorted out). I had to take out the PSU after plugging in all the power cables because I have not plug in the front panel cables.

Another tips I can tell you is the CPU cooler from the CPU box already has a thermal paste applied on the cooler. If you have been seeing PC building videos, you might be thinking, "Shucks, I didn't buy any thermal paste." The answer is no need. I had to watch some youtube videos until some guy mentioned it.

One trouble I met in building my PC was the graphic card. When I finished building the PC, the parts are powered, but it was not booting. From online search, I took the suggestion to put only one RAM and to take out all expansion cards and yes it went to BIOS! Then I put in the other RAM, followed by installing Windows. Then I put in my wireless card. Everything still good. Then I put in my graphic card. Blank. BLANK. Oh my God. I spent the nights until 4 am only to know my graphic card caused the problem. So I went online, and some tips are to disable Intel graphics (for fear of graphic module crash) and to force enable PCI-E slot for graphics. Of course, not wanting to waste Intel graphics, I force enable PCI-E and... Wow, there is an option to enable both graphics there? Let's try! So I went to boot the PC again and BAM. Still blank. Wondering what is wrong, I try to plug in the HDMI to the motherboard instead of the graphic card and the screen is blue with mouse cursor! I tried moving the mouse cursor and it went missing to the side! That means that the system thinks that I have two monitors; one from graphic card and one from motherboard. This means my graphic card is working! So there you go, I uninstalled the graphic card, went into safe mode, disable Intel graphics, reinstalled the graphic card and finally, it works. That. Was. Painful. But worth it :)

Another confusion I met was IO shield. I didn't know why there are so many protruding pins on the IO shield, and Google search did not come up with anything obvious. Those pins are for grounding (prevent electric shock) the electric charge from the IO panel on the motherboard. They should touch the IO panel on the motherboard, but yes, you have to bend it! Otherwise you can't fit the motherboard with the IO shield on the case. It took me several attempts until I can fit my motherboard into the IO shield.

Oh, one more advice. Please have a screwdriver ready. I thought one of the parts would provide screwdriver, which apparently is not. In the end I used a cheap multi-tool with screwdriver that I owned to build the whole PC (ckck).

Wednesday, April 9, 2014

Green Gem Unanimated Sprite

A green gem sprite I created for a Unity Game Tutorial. Find my extension to the tutorial here!

Sunday, January 12, 2014

Visual Object-Oriented Programming (OOP) Language Editor - Updated

I feel quite challenged when I see Java codes that are very long and have so many methods. I always think that Eclipse, or any IDE for that matter, could be made more convenient. Of course, there is the Package Explorer in Eclipse, but I think it could be made cooler and easier on the eyes. This idea might not be suitable to those who are used to looking at lengthy codes.

So, what am I looking for? I am not looking at GUI builder or UML kind of programming. I am also not looking at Visual Programming, but it is closer to what I am looking for. So, what I am looking for is an editor that makes each methods as blocks, as well as the classes. Each method would be opened in its own window, so now we could have 4 methods or more on screen, but not arranged horizontally in length. We could copy methods around by dragging the method 'block' to the class we would like to copy it to (of course it would be awesome if we have a library of method 'block's we would like to save).

I can't really make it since I don't think my knowledge would be sufficient to make such plug-in for Eclipse or to make such editor. I am also not familiar with prototyping but I draw something to make sense of it.



My drawing is ugly (and I was very careless with the code) but I hope I could get the message across. So each class and its methods will be listed on the left just like in Eclipse Package Explorer. Of course the package and all will be shown there as well. Now, each methods will be listed under the class and if you double click it, that method implementation will be opened in a small window. Possibly, different modifiers will be colored differently, e.g. white for public, gray for private, yellow for static and so on so forth. The Java Doc (for Java) for the method will be shown as well and could be minimized. If a method is called within another method, and both methods have opened window, there will be a line between them to indicate the call.

Despite all this, we could click a button to show the whole class in its usual implementation - long codes. So, this plug-in or editor will be a smart interpreter of the code that could switch back and forth between the codes and this kind of visual editor.

What do I want to achieve?
1. Fun time coding - that kind of editor would be so fun to play around with and looks futuristic even when it isn't - for example, Jarvis theme to make it blue and transparent and stuff
2. Easier navigation - after going through Software Engineering class, I realize to make a good piece of code, you need a lot of modularity and abstraction. This also means you will have a lot of methods which could make it hard to go around the code if you are still not used to organizing the methods nicely - e.g. high level should be on top of lower level methods or linked methods should be placed each other. With this, you could open high level and low level methods at the same time from non-connecting methods (e.g. one deals with addition while the other subtraction) and edit them without losing navigability
3. Versatility - Dragging methods around to other class would be so fun. Of course, the editor must be smart, too! For example, children classes should not re-implement inherited methods but list them and show the code to the user anyway and so on so forth.

I am not sure if this is not a good idea, but I think it would be fun if we have such thing.

*Update:
I was trying out on the idea with some prototype, but apparently someone made it already. It's called CodeBubble (You could see the demo here). I am going to close my GitHub repo on the work now since someone made it already :)

Friday, January 10, 2014

Improving Singapore Bus Timing App

I have some troubles using SBS Transit Iris on Android. Sometimes, the listed nearby bus stops do not include the bus stop I am in. Then, I need to find the bus service and look for the bus stop I am at. I came up with an idea of how to improve such app through NFC.

While NFC usage is not that popular, I think it could be utilised to improve bus stop searching in bus timing app. So, in every bus stop, an NFC tag is put to identify the bus stop we are at. Then, when we open the app, we could choose to scan the NFC right away instead of looking through a list of bus stops. This way, we could skip looking at the list of bus stops and quickly see the bus timing that we need.

Now, why NFC? Firstly, NFC tag is cheap. Secondly, the identifier of bus stop in Singapore is by 6-digit number which I believe could be contained in NFC tag. Thirdly, using it is as easy as using EZ-link - just tap. Of course probably we need to turn on some settings to enable scanning the NFC tag, but this could be put inside the bus timing app that will automatically turn on the scanner (and turn it off when we exit the app).

What about the app? Could it be made even more convenient? Of course! Instead of opening the app, it should have a widget! What does the widget do? The widget is simple: tap it to scan. That way, the use of the app will be very fast. Tap the widget, scan the NFC tag, and all the bus schedules will be listed.

What problem could arise from this? One problem I could foresee is crowding of people around the NFC tag. Indeed, it would be better if the whole bus stop is the scan area itself, which probably needs a different technology (and could spark debate on radiation and stuff). One workaround would be to make that whole board of bus information on the bus stops to be the NFC tag, then you have front and back with big area though probably with a higher cost. Of course, another workaround would be to put NFC tags on the safety barricades (am I using the correct term here?) which would have around 3 or 4 for every bus stop. There are many other solutions, but the idea is the same.

Hopefully such convenience comes soon :D And yeah, I hope I can find something like this, too, in Indonesia in the near future.

Thursday, January 9, 2014

Extending Google features: Unit Length Converter

Did you know that you could use Google to convert units? Try typing "1 inch to cm" (in my Chrome, typing "1 inch" will list "= 2.54 cm" in auto-complete) and search it. Cool? Of course!

Now, the thing is, I want to know approximately how long is that. Why not extend that Google function even more? Make a digital ruler based on screen density!

It seems that someone made that already. You could try http://iruler.net/. It will make that converter function in Google more awesome, right? Since now we don't need to wonder how long is that compared to our hands and such.

Indeed, it is easier to implement for length since we could see it in our monitors. How about other units? I can't think of many examples, but probably for weight, we could use a common scale, like 2 kg is the weight of your laptop, 500 grams is your phone and so on.

Thursday, December 19, 2013

Module Review: 2013/2014 Semester I

Note: Please note that there might be differences between modules in semester 1 and semester 2

======================================================
======================================================

CS2101 - Effective Communication for Computing Professionals (4 MC) [Twinning module with CS2103T] (No Exam; 1 Final Writing assignment in class and 1 Final Group Discussion)
Usual communication module. I must say some materials were very interesting and really help me to realize how to be a better speaker. It could have more relevance to Software Engineering module by having more real life experience, though, like how to present your software, because most of the presentations we did were standard presentation with guidelines on what to present, which were quite different than pitching videos you see around. You will be assigned to a group (assignment depends on the teacher - in general, you will be mixed to other nationalities and genders, some teachers mix students according to programming expertise as well in addition to nationalities) which would last for one semester and the same group applies to CS2103T. This is one part of module twinning. The other part is that your group's presentation will be on your group's software developed in CS2103T.
Workload: 2 major presentations, some graded blog writing and commenting on others' blog writing, report writing, making the developer guide of the software you make in CS2103T, many graded impromptu short presentations after most lessons, one final writing assignment (closed book) and one final graded private group discussion.

CS2103T - Software Engineering (4 MC) [Twinning module with CS2101] (Open Book Exam)
A very good module to introduce you to software engineering, and awesome prof. It opens your mind to what software engineers have to go through in making a software. The tutorials are quite tiresome since you need to reflect each week's lesson to your team's software. The module needs consistent programming effort to ensure you could finish the software without sleepless night nearing the deadline. Experienced team members are good to have in this module (much depends on luck in your CS2101 group assignment). The module also have participation points which come from in-lecture questions and SMS questions.
Workload: One software (on some variation of to-do application) by end of semester with many interim deadlines during the semester, graded weekly tutorials and in-lecture questions (you will get full mark for your final score from these as long as your total score is above 80% than maximum points) and one final exam (kind of a recreation of how you design your software and how you do some things in making your software, e.g. unit tests and patterns).

CS2105 - Introduction to Computer Networks (4 MC) (Closed Book Exam - Cheat-sheet allowed)
Interesting introduction to how the Internet and network system works, though very basic and won't get your very far unless you take the next modules in Networking. There were 3 programming assignments. The first one was quite easy, but the other 2 were very abstract since you are asked to simulate some real Internet system. On top of that, they are kind of built on top of last year's (semester I) assignments, so they could only get harder. Most of the materials taught could be read from the book and there were not much participation points from tutorials.
Workload: 3 programming assignments, one mid term test and one final exam.

CS2106 - Introduction to Operating Systems (4 MC) (Closed Book Exam)
Bear in mind I took this module when it was taught by a guest lecturer (Bic Lubomir), so the module might change greatly in the next semester I. To start off, I must say the lecturer is very slack. He said in his first lecture that he doesn't really like live lecture and all his lectures are already in the webcast and he does not mind if you don't come for lectures. So yeah, fun module. The materials taught were from his book. Tutorials were also from his book. He made his e-book available for us, so it was nice of him. I must say the things that I learnt, though, was interesting since it helped me to understand how OS like Windows and Linux works. The programming assignments were kind of hard but at the same time interesting since I learnt that those stuffs on Windows are not that simple to be error-free (thanks, Microsoft). There were 2 programming assignments. Tutorials were required to be submitted online by every Friday to be marked, although correctness of the answers were not marked.
Workload: graded weekly tutorials (13 of them), 2 quizzes (one near mid semester and the other near the end of semester), 2 programming assignments and one final exam.

CS3230 - Design and Analysis of Algorithms (4 MC) (Open Book Exam)
A hardcore algorithm module. CS2020 helped me to understand many stuffs (not sure about CS2010, although I believe the materials taught are more or less the same). One of the profs who was the module coordinator just started teaching the module again, so the workload and materials were dynamically changed along the semester. Hardcore stuffs, though I think it sparked my interest in understanding algorithms more. There were programming assignments on algorithms and graded homework on the materials taught. Tutorials have participation points which require you to answer the tutorial questions on the board. The bell curve is quite tough since most people get full mark or near it for all assignments and homework. The final exam was very difficult for me since the questions are of you-know-or-you-don't kind of questions, and I belong to you-don't.
Workload: 3 programming assignments, 3 graded homework, tutorial participation points and one final exam.

Total MC - Sem 3     : 20
Total MC - Sem 2     : 26
Total MC - Sem 1     : 20
Total MC - Overall    : 66

Friday, November 22, 2013

Google's Focus on Chrome

http://thenextweb.com/google/2013/11/21/google-building-chrome-app-based-development-environment-using-dart-polymer/?fromcat=all

It seems that lately Google has been pushing the boundary of Chrome and Chromium OS. I discussed about Chromium OS limitations before (here and here), but the article above seems to make my posts very obsolete as it will be soon before we could develop on Chromium OS/Chrome.