FAQ
Frequently Asked Questions
Students (current & prospective)
-
How to join KRG?
Graduate Students
- Prospective graduate students
- Unlike the American system, professors have little say in admitting students. Instead, you must go through the NTU Graduate School Admissions process.
- you may contact me for scholarship opportunities after you have submitted your NTU application, so that I may look at your application material while considering you for a scholarship.
- Student Spammers
Unless you mention the code "KRG" in your email header/subject/title, you may not get a reply from me; since it means that
- You did not bother to visit our research group website
- You are likely of mediocre calibre
- You are not goal-oriented, simply employing a machine-gun approach
- Matriculated/enrolled graduate students seeking supervisor
Once you have been accepted by NTU Graduate school, and if you are interested in our research areas, please email the following items to me :
- Brief 1-page statement of research interest
- Resume
- Published paper(s)
and I will get back to you.
Undergraduate Students (FYP, URECA, UROP, etc.)
I don't have much control over the selection of FYP students, but you are welcomed to drop by my office for a chat. If you wish to pursue a project under my supervision, one general rule of thumb is that if you don't work hard, you will not pass the project. Passing is a privilege, not an entitlement. Yes, I have failed students in the past.
- Prospective graduate students
-
Summer Internships Unavailable.
No. Unfortunately I do not have time to supervise short term projects, and will have to turn down many world-class applicants such as those from IIT, India.
All emails containing the word "intern", "internship" will be routed straight into my trash, because it clearly means that you have not read this message, and are simply spamming me.-
What is plagarism?
-
- All students (to whom I serve as supervisor/examiner/reviewer) are expected to strictly follow rules against plagarism, or risk total failure at the subject and/or termination from University.
- You must sign a declaration of originality form and submit it to me before I can review your work.
- The following, unless stated and properly credited, in any work must be the original creation of students beyond a reasonable doubt:
- All sentences or paragraphs
- Line of thought. Yes, if it is obvious that you are paraphrasing (rewriting the same material in another style) whole paragraphs, sections, pages, it is considered plagarism. Read the examples posted outside my office.
- All figures
- All tables
- All equations
- All experimental results
- If you copy from another source (copyrighted or not) one or more sentences, you must quote the copied portion in its entirety, plus add a reference at the end, for example:
This is my own sentence. According to [reference at the beginning or], "This is a copied sentence. This is the second copied sentence. This is the third copied sentence." [reference at the end]
- Some lazy students simply quote verbatim whole chapters or sections, e.g.:
Chapter 2 Related work [5] 1 Data mining "Data mining refers to the .... {after 10 pages of copied and quoted material} ... Support vector machines performed the best." [5]
Well, this is not plagarism and you won't be penalized for that. However, this simply shows that your IQ is no higher than a photocopy/xerox machine. Do you think NTU should grant a Bachelor of Engineering degree to a xerox machine? Not that churning out xerox machines graduates is news, but there is currently an oversupply of walking xerox machines (many with foreign degrees earning superscale salaries like >S$100K per month) in Singapore, so NTU has no choice but to produce graduates better than xerox machines for their own good; so that NTU graduates can survive in a market inundated with foreign-trained walking xerox machines.
- The original source of all copied (cut&pasted) figures/tables/equations/results must be properly credited in the caption, for example:
Figure 1. A neural network [source here or...]. (reproduced with permission from John Doe[source here]). Table 1. Results for SVM [source here or ...]. (reproduced with permission from John Doe[source here]).
- Additional steps are needed if you wish to reproduce copyrighted works. You must sought the original author's permission to re-use their copyrighted material and acknowledge their granted permission either in the figure caption, footnote, or acknowledgement section. If the copied material has a creative commons style of licence, you must also state so.
- As long as there is a copyright statement such as '© 2005 Kuiyu CHANG' anywhere in the piece of work, everything contained therein is protected by international copyright laws. This means that if you copy a copyrighted work, you can get sued in additional to getting expelled from University.
- To save the trouble, you are strongly encouraged to create your own drawings and write your own sentences.
- Look at a number of different reference material, understand and fully digest it
- Keep your own notes about the material, than start writing based on your own notes without looking at the original source.
- It is better to write short concise sentences than to copy pages of text from elsewhere.
- Use your brain more often to create. Your brain is like a muscle, it will shrink if you don't use it.
- Read up China Digital Times to appreciate how plagarism can basically end your career.
- Also refer to IEEE stance on plagarism, and the different categories
-
Learn a Scripting Language - Python
If you do not already know a scripting language, I strongly recommend that you learn Python, which is easier to maintain as it is designed from the ground up to be object-oriented (feels like C++/Java). PERL used to be the de facto all-purpose scripting language, not any more. See the following links for the reasons:
- Python is Cool (and Perl is not), Especially for C/C++ Programmers
- Python versus PERL
- Python and Ruby, both good!
- Eric S. Raymond's take on Python
A good Python reference book to own is O'Reilly Python Pocket Reference , for only S$13 from Clementi Book Store.
-
The Bookstore in Singapore - Clementi Book Store
Information for foreign students: Clementi Book Store (CBS) is the best and cheapest place in Singapore to order your widest selection of technical books, just ask any NUS/NTU /JC/polytechnic student. I know, as I have been buying technical books from CBS since 1984, when I purchased my first copy of Beagle Bros Programming Guide for Apple ][. Even during my studies/work in the States, I have been a regular patron of CBS whenever I come back to Singapore for Holidays. CBS is run by the same owners of NIE, NUS bookstores, Nanyang Super Market, etc.
Clementi Book Store (Near Clementi MRT Station):
450 Clementi Ave 3 #01-297 Tel: 6776-2146 Fax: 6774-2362 clementibook@pacific.net.sg Mon - Fri 0930 - 1900 Sat 0930 - 1800 Sun/Holiday Closed
They have whole shelves of out-of-date technical/non-technical books displayed out in front. This is a good opportunity for you to pick up a cheap (around S$10) copy of the once-hot technology that you have always wanted to learn but for which you were not willing to fork out the initial premium (S$50-S$100).
Disclaimer: I do not own shares or interest in CBS, although I know the proprietors personally.
-
Get a (writing) Notebook!
As a dilligent student, you should get a no-frills notebook/notepad (and pen) to keep with you all the time.
This notebook is incredibily useful, you can jot down your ideas anytime and anywhere. YOu can draw anything and write equations easily. You can also record down your research findings, experiment results, etc.
All the successful people I know carry with them a notebook.
- My supervisor at UT Austin, Prof Joydeep Ghosh
- The multi-millionair founders of Neonyoyo, Inc.
- The great Indian Mathematician, "Srinivasa Ramanujun":http://www.vidyapatha.com/scientists/ramanujun.php
Even failures like yours truly keep a notebook http://research.mosuma.com/Members/zhangguiyu/media/blog/notes_kuiyu/, so I really don't see how you can survive your career/studies without using a notebook.
Don't kid yourself by saying that you will keep notes using your mobile phone, PDA, computer, etc. It simply doesn't work. I have tried doing that before, it does not work. By the time you get your machine out, your ideas already gone. Also, try writing an equation, and drawing something, it takes you ages.
A notebook is the simplest apparatus, it tracks your ideas sequentially. Which means you can also look them up sequentially.
Nothing beats the good old pen and paper.
I hope you will seriously consider my suggestion.
-
Backup, backup, backup!
How to ensure your data is safe? How to ensure that you graduate on time? The modern day equivalent of "My dog ate my report" is "My hard disk crashed"
Answer: Backup, backup, backup
Simplest solution: backup to a portable USB hard drive. Make sure the USB drive is as big as your main data drive, if it is any smaller, you will be too lazy to figure out what to backup. An external USB 2.0 drive cost around S$100 for 200GB (circa 2007). Buy this as an insurance, if nothing else.
All files checked in to our svn.mosuma.com repository enjoys 3 levels of backup:
- The svn repository sits on a RAID1 (mirroring using two drives) hard drive partition. If one drive fails, the mirrored drive will kick in automatically.
- The mirrored partition is incrementally backed up to a 3rd physical drive (of the same server) every day/week/month, maintaining incremental backups for up to 6 months.
- The svn repository is periodically backed up to a different server located geographically away from the main svn server.
Do check in important documentation and source code to svn.mosuma.com. Don't check in everything to it, however, as it is not a black hole.
The NTU server liubei.mosuma.com (accessible by KRG students onlyl) also enjoys the first two levels of protection.
On your personal machine, you can consider installing software RAID1 if you have two hard drives (need not be identical). Richard Stallman uses a RAID1 mirroring (dual hard drives) on his notebook. Windows XP has a hidden RAID1 configuration software, google for it. Linux 2.6 and above has software RAID built in, make use of it. Software RAID is more flexible (writes are slower because every write goes to 2 physical drives, reads are faster as different portions of large files can be read in parallel from the 2 drives) than hardware RAID because it is not tied into a particular hardware.
Some tools to use:
- TreeComp Andrew Tridgell and Paul Mackerras (for windows)
- rsync. An award-winning delta backup tool originally written by Andrew Tridgell and Paul Mackerras. I use rsync to synchronize between windows/linux across different countries! You just need one command line to synchronize! Install cygwin to use rsync on windows.
- rsnapshot. A backup tool based on rsync. I used it to automatically backup multiple geographically separated servers.
Back in 1993, a student complained to me that his hard drive crashed and requested special consideration for handing in his report late. I told him he might as well have told me that his dog ate his report.
I personally have seen 5-6 hard drives died over the course of my life. Nowadays, I rsync my important directories everyday! For ultra urgent documents such as last minute presentations and papers, I make sure I save an extra copy in a flash memory after every few minutes of editing.
All my recent Linux installations (e.g. CSC207, CSC279 CID) have used a RAID1 Mirror plus 3rd drive backup where feasible. In fact, one of the mirror drive in the CSC279 CID server died halfway through the 2-week project duration, luckily the mirrored drive kicked in automatically.
I have once heard the story about a pre-historic speaker, who would prepare the following for every talk:
- an extra set of transparencies of his talk/presentation
- a set of printed slides on paper
- a videotape recording of his talk to be pre-delivered to the destination
The videotape is intended to be played if he cannot make it to the venue. This shows how careful or paranoid the speaker is, depending on how you view it.
Backing up your data is your personal responsibility. If you don't backup, you take full responsibility for all the consequences.
Lastly, don't tell me your computer ate your code/report.
-
Turn Around Time
Please keep in mind that I have more than 10 students to supervise at any time, so I am unable to response to your myriad requests immediately. Typical turn around time are shown below:
- Report (more than 30 pages) for me to review/edit
- 1 month
- Journal/chapter for me to review/edit
- 1 month
- Conference Paper for me to review/edit
- 2 weeks
- Software/ideas/collector updates for me to review
- 1 week
- 3 business days
If I take more than twice the typical response time, please email me a reminder.
-
Why should I join KRG?
We offer the following:
- Culture of excellence, as shown by the awards won by our group members:
- SIGIR student travel grant, Netherlands, 2007
- SIAM Data Mining Conference student travel grant, Minnesota, U.S.A., 2007
- Microsoft Research Asia Fellowship, Beijing, 2006 (only 2 awarded to Singapore in 2006)
- ISI Intelligence and Security Best Paper Award, U.S.A., 2005
- See write-up in The Straits Times, 2007.07.07
- "Motorola Best Paper Award, U.S.A., 1996":
- Strong focus on developing practical solutions/technologies that can change the world. Solutions developed by us are immediately deployed into the commercial markets in China to test the water.
- Close ties to industries in Singapore, China, and Silicon Valley, collaborators include:
- Lingba Technology, Shanghai, Guangzhou, China
- ZingMobile Singapore, China, Indonesia
- Close ties to academia in China, Japan, and U.S.A., collaborators include
- Chong Qing University of Postal and Telecommunications
- Chinese University of Hong Kong, China
- University of Hong Kong, China
- Tokyo University, Japan
- Osaka University, Japan
- University of Texas, U.S.A.
- Entreprenaural Spirit Strongly encouraged
- Our vast networks include direct access to angel investors and VCs in Singapore, China, and U.S.A.
- If you have a strong conviction or idea, I strongly encourage you to go ahead and implement it, and put aside your degree pursuits for the time being. In fact, I would be happy to see you become the next Sergey Brin (Google), Larry Page (Google), Jerry Yang (Yahoo), or David Filo (Yahoo).
- Open and academically challenging atmosphere
- We encourage bold and forward thinking students to join us
- In our group, students are encouraged to question anything or any authority, it is only through this freedom will we all grow
- Systematic Management of all Research Projects
- For large projects, we have a professionally organized weekly group meetings, with state-of-the-art online wiki management and issue tracking system.
- For geeks, we have an open LDAP based secured system complete with subversion SVN control of all documents (papers, reports) and source code. So it will feel exactly like working in the industry.
- Last but not least, I will personally supervise you, and meet you at least once a week to check on your progress
If you find any or all of the above appealing, we welcome you to become one of us!
Kuiyu
- Culture of excellence, as shown by the awards won by our group members:
-
Who should not join KRG?
You should not join KRG if you satisfy any one of the following:
For Graduate Students
You don't know why you are pursuing a Ph.D./M.S. degree, e.g., if you are pursuing a Ph.D./M.S. because of any of the following reasons, we don't want you:
- Your parents want you to do a Ph.D./M.S.
- Your significant other is doing a Ph.D./M.S., you need to keep up
- Every one in your family has a Ph.D./M.S., so you figured "why not?"
- You want to find a job in Singapore
- There is an extremely small (or zero) job market for home-grown Ph.D.s in Singapore, by the way.
- You eventually want to go to another more reputable University for your Ph.D.
- OK if you wish to do a Master's with our group
- Not OK if you want to do a Ph.D. while waiting for admission to another University
- If you have such high aspirations, you should at least stick to your guns by waiting patiently for admission to the graduate school of your dreams
- If you do not even have the courage to wait, you do not deserve a Ph.D.
For All Students (graduate and undergraduate)
- You don't know your goal in life, e.g.,
- What do you see yourself doing in 5 years, 10 years?
- You don't know your interest
- You don't know why you are studying for a B.Eng
- You don't know why you are alive, e.g.,
- You don't know what to do every day after waking up, other than playing games, surfing online aimlessly, matchmaking, etc.
- You don't understand the following mathematical statements
- two events are probabilistically independent
- two vectors are orthorgonal
- You cannot devote at least
- 10 hours a week on your project (FYP, URECA)
- 50 hours a week on your research (Ph.D., Masters, UROP)
- You are lazy
- Go buy a lottery ticket instead, KRG is no place for the uninitiated
- You are not self-motivated
- If you cannot solve problems by yourself but instead requires constant babysitting, then KRG is not for you. You should go to a daycare centre or hire a babysitter instead
How to ...
-
Branch & Merge using svn
-
- Creating a branch (to svn, a branch is just a copy):
svn copy https://svn.mosuma.com/r9999/proj/A/trunk https://svn.mosuma.com/r9999/proj/A/branches/newbranch
- Checkout branch:
svn co https://svn.mosuma.com/r9999/proj/A/branches/newbranch newbranch
- Change Directory to local branch, work on it:
cd newbranch
- Merge newbranch back into trunk. First see what has changed since branching:
cd newbranch svn log --stop-on-copy
Note the starting (when branch was created),e.g. 341, and ending revision numbers, e.g. 405
- Check out trunk (target for merge):
cd .. svn co https://svn.mosuma.com/r9999/proj/A/trunk projA cd projA svn merge -r 341:405 https://svn.mosuma.com/proj/A/branches/newbranch
- Check status, examine changes, compile, test, etc.:
svn status
- Commit Merge:
svn commit -m "Merged newbranch changes r341:405 into trunk"
- Creating a branch (to svn, a branch is just a copy):
-
Merge conflicting files in svn
-
- If conflict detected after "svn update"
- affected file e.g.
affectedfile, will have conflict markers>>>>>>>inserted inline - 3 special files, in addition to
affectedfilewill be createdaffectedfile.mine- Your local working copy before
svn update
- Your local working copy before
affectedfile.r{oldrevision}- Base version before you modified your local working copy
affectedfile.r{latestrevision}- Latest version received from SVN repository
- affected file e.g.
- To resolve conflict, do one of the following:
- Edit
affectedfilemanually, noting the conflict markers>>>>>>>>>>and referencing the 3 special files, or - If you local copy is simply out-of-date, copy one of the 3 special files over to
affectedfile, and/or delete out-of-date ones amongst the 3.
- Edit
- Tell svn that you have resolved the conflict:
svn resolved affectedfile
- Commit your changes:
svn commit
- If conflict detected after "svn update"
-
Install PostgreSQL & pgAdmin
PostgreSQL has more SQL (SQL99) features than mySQL, and a more liberal license (see comparison) If your project needs to talk to a heavyweight DBMS, consider PostgreSQL.
- Under Linux simply install the appropriate deb/rpm packages
- Under windows, you could first install cygwin, then use cygwin setup tool to install the postgresql packages
- Highly recommended: install one of the many GUI clients such as the open source pgAdmin (works for windows, linux, mac, etc.)
- To access postgresql database from python, install PyGreSQL
- On linux, simply install the pygresql package
- On cygwin, you need to download openssl source, then modify your setup.py to include
/usr/src/openssl/include, and install using distutils:python setup.py install
- An underused feature of PostgreSQL is its ability to define functions in just about any language you like. Java, Perl, Python, TCL, among others, as well as PL/PGSQL. This is done using the plpython module that comes with postgresql. See example.
- You are strongly recommended to use pgAdmin to access your postgresql db, using the psql terminal is too unproductive. To allow remote access to your postgresql instance, you need to add the following line to your
/etc/postgresql/{versionnumber}/main/pg_hba.confsettings file and restart postgresql by typing as root/etc/init.d/postgresql restart. Any changes topg_hba.confwill require a restart for the change to take place:host all all 155.69.140.125 255.255.255.255 trust ^ replace 155.69.140.125 with your pgAdmin client IP address - To debug DB connections, you should do a listing of the file:
tail /etc/postgresql/{versionnumber}/main/log/
-
Check in/out src/dat/doc using Subversion (svn)
Install SVN
- Download & install SVN client.
- Configure SVN. Important if your web-access is censored by a http proxy.
- cd to local drive path:
cd ~/mylocalcopy - List what is available in the repository (also viewable through a browser at the same URL or via the trac interface):
svn list https://svn.mosuma.com/r4000/
Checking out a subdirectory
- Checkout a specify part of the repository to your local path using your research.mosuma.com userid:
- for normal projects (small development):
svn checkout --username youruserid https://svn.mosuma.com/r4000/proj/{projname} - for larger projects with 3 special directories trunk, tags, branches:
svn checkout --username youruserid https://svn.mosuma.com/r4000/proj/{projname}/trunk projname - Make sure you don't check out the project itself without specifying the trunk (if there is one). See svn book notes
- trunk stores the main line of development work
- tags stores frozen snapshots of your work
- branches is for different forks/variations of your development, usually when another person wants to branch/fork off from your work (not usually required here, except for mega projects). See faq entry on branching and merging
- for normal projects (small development):
- Make changes to your local copy by adding/deleting/modifying files. You can check the status of your local files viz-a-viz the repository by:
svn status - For each new file you added/deleted, tell the repository, anywhere within your checked out local copy, do e.g:
svn add newfile svn add * svn del oldfile
- Do an update:
svn update
- Update the repository by committing your changes to it:
svn -m "type some log information here" commit
Without Checking out you can ...
- directly import a local directory into svn, use:
svn -m "direct importing some stuff" import path_to_local_directory https://svn.mosuma.com/r9999/dat/newly_created_directory - do direct operations on the repository by specifying the full URL:
svn -m "making directory" mkdir http://svn.mosuma.com/r9999/newdirectory
- For more information, refer to
-
Install Subversion (svn) client
- Windows
- You are strongly encouraged to install the command line subversion client under cygwin (see below). Only when you are familiar with the basic svn commands should you consider using a GUI svn client such as TortoiseSVN (for windows). Google
svn GUI(windows and java versions available, Eclipse comes with support for subversion). - Cygwin
- Install cygwin under Windows. Then install the svn client using cygwin-setup. svn is not included by the default cygwin installation.
- Unix/Linux
- Install the svn package for your favorite Unix/Linux distribution. svn is not included by default in most distributions.
For Ubuntu linux, install subversion client using ubuntu package manager, or the following commands (the sudo command first switches you to the root user):
sudo bash apt-get install subversion - Configuration
- Important: if your web-access is censored by a http proxy (e.g. within NTU), please read SVN configuration
-
Set up dynamic DNS
In order to have a fixed name resolved to your dynamic IP address from home, apply for one of the free dynamic DNS solutions, such as dyndns. You windows or linux computer will have to install a ddclient that will update the dyndns server periodically about it's current IP address. Your router (e.g. netgear, linksys) may also have built-in support for dyndns.
Some ISP's such as minOnline block common port addresses, but not higher ports (>1023), so you should be able to run a Zope/Plone server on ports higher than 1023.
-
Create Table of Contents, Index, Bibliography in OpenOffice
-
Install Linux
-
- I expect all my students (Kindergarten, Primary, Secondary, Junior College, Polytechnic, BS, MS, PhD) to use/learn Linux.
- Distributions
- Ubuntu Linux, the best non-commerical variation of GNU/Linux or Debian. It is also very up-to-date, and will most likely support your hardware. A new release comes out every 6 months. There are 2 choices, Server or Desktop, I strongly recommend you install the Desktop version and check the Alternate Desktop box, which gives you a text-base instead of a GUI installer. The GUI installer runs quite slow from the CD. Not to worry, you will still get a GUI desktop if you install from the alternate desktop version. The Server is for headless non-GUI PCs.
- Debian (GNU/Linux) is the next best choice, but not as compatible and up-to-date as Ubuntu
- Fedora Core X is discouraged, as it is tied to Red Hat
- Gentoo is strongly discouraged, unless you are Linus Torvalds, because you would be wasting way too much time installing and maintaining it
- SuSe Linux. Neutral. I have not used it.
-
Connect to Linux remote desktop via VNC
You can maintain a virtual graphical desktop session on one of our KRG servers, i.e. you can logout and login the next day to find the exact same desktop (need VPN for connecting to NTU machines from outside) from anywhere in the world, with VNC installed.
ssh to the linux server:
modify ~/.vnc/xstartup to include startup programs like xterm and window managers
Start VNC server instance:
vnc4server
enter your password
Check which port number (590x) vnc4server is running at by typing:
ps aux |grep vnc
logout from Server
On your local PC (windows,linux)
Run the vnc4viewer GUI
Enter the hostname/ipaddress of the linux server, followed by the port number, e.g.
liubei.dyndns.org:5901
Enter the same password you set in step 3
Run a window manager such as twm, fvwm, wmaker, if you did not specify it propery in step 1 on the linux server.
Search online for more info on VNC (Virtual Network Computing).
-
Install software packages in Debian/Ubuntu Linux
Do not install packages from by compiling from source. It will take you a lot of effort. Instead, use the variety of package managers that comes with Ubuntu/Debian Linux to install more than 16000 software packages with just a few keystrokes using one of the following approaches:
- apt-get
If you are feeling lucky, for quick and dirty installation, as root enter:
apt-get install {guess name of package you want to install}- dselect
If (you think) you are super smart, you can try running dselect from the command line as root:
dselect
dselect is a text based package selection/management software, that would serve you well even over slow remote Internet connection. However, you must excercise extreme patience in learning to use it, one mistaken keystroke could remove a bunch of essential system packages, leaving your system in an unuseable state. I have had that experience.
- synaptics
- If you have less time, run synaptics from the GUI.
- GUI
- If you are lazy, use the simplest way: In the Ubuntu desktop, click Applications -> Add/Remove Applications, you will be prompted to enter the root(or your) password (I can't remember, as I seldom use this approach). You might not be able to install all applications using this approach. If you can't find a package, click "Advanced" to bring up the Synaptics package manager.
-
Configure NTU Proxy in Linux
All outbound http (note that: https is not monitored) traffic from NTU are censored/monitored by an NTU proxy, you need to configure the proxy server as follows:
- Console
You need to set the http_proxy environment variable by typing:
export http_proxy=http://proxy.ntu.edu.sg:8080
Include the above line in your "~/.bashrc" startup file for automatic configuration
- GUI
Just go to your web browser to configure the automatic proxy
http://www.ntu.edu.sg/proxy.pac
Alternatively, you can specify a manual proxy:
Proxy: http://proxy.ntu.edu.sg Port: 8080
-
ssh without password
Follow this graphical guide here to use a public/private key and ssh-agent to remotely login to your Linux machine without typing or storing a password using putty (the most popular SSH client for non-Linux platforms) and Linux.
-
Create online Project Plan
All students should use the online pm tool to create a research plan.
Go to "my folder"
Select "add item" and "project manager". A new project manager will be created. Fill in name, title, description and body. Make sure "All projects on the site" is unchecked, otherwise you will encounter errors.
Add Milestones to Project Manager
DO NOT Add Todos to each Milestone
- You aren't allowed to add it, anyway.
- When you get down to advanced planning at the Todo level, you are over-planning. Just worry about major milestones and,
- I will add the todos for you as during our weekly meetings
In the Todos, you can search and add a member as participant of your project. Enter "zhangguiyu" to search for Kuiyu.
Each Milestone can have several Todos. You could create two Milestones, one each for the two semesters, and within each milestone, you can plan the details for each semester.
The good thing about using this to store you plan is you are always aware of your plan, and I can also check it online anytime. It is also relatively easy to update.
-
Browse SVN Repository
There are two options:
- Default SVN web interface
- Trac web interface
- http://trac.mosuma.com/4000
- Remember to click the "Login" link first
The Trac interface is signficantly more robust, and includes a wiki, latest check in activities, colored diffs between revisions, and line numbering, etc.
You will continue to use the CLT or GUI SVN client to check in/out stuff. But feel free to use the web interface to look at your files.
-
Set UTF-8 encoding in VIM for windows?
Edit your .vimrc settings file to include the following line:
set enc=utf-8
and you should be able to edit a UTF-8 file in Windows using gvim.
For Linux, just set the locale to utf-8 such as:
export LANG=en_SG.UTF-8
-
Connect to MS Exchange Server with Evolution?
Evolution is a free Micorsoft Outlook fat client replacement for Linux that talks to an Exchange server, NTU staff and students can configure it like so:
Under "Receiving Options", you may set the Addressbook server name to
staff10.staff.main.ntu.edu.sg
in order for evolution to look up user names.
-
Switch URL of checked out svn copy?
If you prepare a scholarly article, it would be checked into svn as a subdirectory under "https://svn.mosuma.com/r4000/doc/papers/1draft".
When your paper undergoes a state transition, i.e. it is submitted, rejected, accepted (under revision) or published, I will move it to "https://svn.mosuma.com/r4000/doc/papers/2submitted", "https://svn.mosuma.com/r4000/doc/papers/3rejected", "https://svn.mosuma.com/r4000/doc/papers/4revised", "https://svn.mosuma.com/r4000/doc/papers/5published", respectively.
You do not need to check out a new copy of the paper when the source SVN URL changes, but you could instead issue the following command on your locally checked out copy:
cd {local_checked_out_directory} svn switch new_svn_urlFor example, you can switch to the URL of an accepted paper under revision by:
cd he2007sdm svn switch https://svn.mosuma.com/r4000/doc/papers/4revised/he2007sdm
If you cannot understand this FAQ, the simplest thing is to delete your local checked out copy, and check out everything from the new svn URL.
-
Install java plugin for 64-bit Linux Firefox?
Not possible. Wasted 2 hours searching for one today.
Closed source java as of 2007.01.03 has no plugins for 64-bit Linux Mozilla.
64-bit Linux has been available for 3 years, and still no mozilla plugin. The management at Sun really demonstrated their incompetence on this one. Just check out the link below:
See bug that was opened in 2003
That is precisely the problem with closed source java.
I am glad that Sun is too behemoth to care about a 64-bit Linux java-plugin for firefox.
With opensource gaining acceptance, people will simply stop using Java, and compile everything from source.
ha ha ha, Sun will eventually be eclipsed by the Open Source Universe!
-
Configure Subversion (svn) through proxy
If your web-access is censored by a http proxy, e.g. your web browser requires a http proxy, add the following lines to '~/.subversion/servers':
[groups] mosuma=svn.mosuma.com [mosuma] http-proxy-host=proxy.ntu.edu.sg http-proxy-port=8080
-
svn keyword
- add self-updating SVN keyword inside source file
-
- Insert the following text fragment into the comment portion of your source file, e.g., mysourcefile.js
// $Id$
- On the command line tell svn you are tagging your file with a keyword as follows:
svn propset svn:keywords "Id" mysourcefile.js
- Commit the change to this file mysourcefile.js
svn -m "any comments" commit mysourcefile.js
Viola! From now onwards, every time you check in this mysourcefile.js file, that field will be updated with the latest details.
See http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.htmlfor more details
- Insert the following text fragment into the comment portion of your source file, e.g., mysourcefile.js
Plone/Zope
-
Learning Plone/Zope
Setup
- Install Linux for best performance and stability, the Ubuntu Linux Distribution is highly recommended! If you use windows, cygwin (a POSIX environment on Windows) is strongly recommended.
- Install latest version of Plone . A self-contained Windows Plone installer is also available.
- Install subversion
- (Optional) Install Eclipse IDE with Plone
- (Optional) Install PostgreSQL DBMS
Essential Reading
- Plone How-tos
- Plone patterns and best practices
- See last section on how to debug Plone code
- ZPT - Zope Page Templates
- Creating content for Plone 2.1
- Working with structured Text
- Archetypes
- ZSQL: connecting Plone to external DBMS
Online Reference
- Andy McKay's Definitive Guide to Plone (online book, also available from NTU library)
- Long list of Plone documentation
Sample Code
- Archetypes
- Quick & dirty way to build your product, check out the following into your plone instance: ArchExample
- do a restart after you check out this, or enable debugging
- when installed, ArchExample will create a new custom content type called:
article, which you can add anywhere within your plone site using the add content link. You can modify the source to create different fields in this custom content type.
- Quick & dirty way to build your product, check out the following into your plone instance: ArchExample
- Plone Collective has hundreds of Plone products
-
Enable Debugging
Recommended: set debug-mode=on in {instancehome}/etc/zope.conf
This way you won't have to restart zope everytime you make some changes to it.
This works for most scripts and files except for i18n translation po files, which will still require a restart for changes to be effective.
To debug cpy and cpt scripts, where print statements do not work, call:
context.plone_log("print whatever you wish to debug")to print something to the event log.
Also read about how to debug insufficient privileges
-
Install Zope/Plone
Executive Summary
Zope is an application server. Plone is a collection of modules served by Zope. You need to understand this basic concept to follow the correct installation order:
- Install Zope, then
- Install Plone
1 Install Zope
1.1 Windows Users
Skip this step.
1.2 Linux Users
Install Zope using your Linux distro's package manager. The following steps are for Debian/Ubuntu Linux console:
1 Switch to root user by typing the following command followed by your user (not root) password:
sudo bash
2 Install zope2.9 (or latest version compatible with your target plone version, I am using 2.9 in this example, for your case, replace 2.9 with the correct version) using ubuntu package manager, or the following commands (first line updates your local DB):
apt-get update apt-get install zope2.9
3 Create a zope instance (which is just a directory where all your zope db/config files are stored), specifying a directory (/var/lib/zope/mypreciouszope, and picking an admin login/password by entering:
/usr/lib/zope2.9/bin/mkzopeinstance.py
4 Restart Zope:
/etc/init.d/zope2.9 restart
5 Now you should be able to connect to your local zope instance via a web browser using the URL http://localhost:9673
2 Install Plone
2.1 Windows Users
By default port 8080 is used for Zope Management Interface (ZMI) and port 80 for plone on Windows, different from Linux which uses 9673 for both ZMI and plone. Prior to installing, please disable any Web servers like IIS or Apache running on Windows or change the default plone and ZMI port numbers to some other values
1 Download the latest Plone for Windows installer from http://plone.org
2 Run the Plone installer, which will install both Zope (port 8080) and Plone (port 80) for you.
3 Fire up the Plone control panel by selecting start/All Programs/Plone/Plone
4 Start Plone via the Plone control panel
- 5 You can now access your
- plonesite @ http://localhost:80 and ZMI @ http://localhost:8080
2.2 Linux Users
I strongly discourage you from installing Plone using the distro package manager because their version of Plone is typically out of date by a year or more. You should install Plone manually since it is very simple:
1 Download the latest Plone for all platforms (not "Plone for Linux" which requires compilation) from http://plone.org
2 Uncompress the downloaded file into /home/{yourname} and copy all the subdirectories within it, e.g., CMFPlone, ATContentTypes into your Zope instance's Products subdirectory, typically in /var/lib/zope/{yourzopeinstance}/Products/:
tar xvzf Plone-2.5.1-UnifiedInstaller.tgz cd Plone-2.5.1 cp * /var/lib/zope/{yourzopeinstance}/Products/3 Restart zope:
/var/lib/zope/bin/zopectl restart
4 Using the admin user/password you created in step 3 of Zope Installation, login to the Zope Management Interface (ZMI) http://localhost:9673
5 Select "add a new Plone Site", give it a name, e.g., mypreciousplone
6 You can now access your plonesite using the URL:
http://localhost:9673/mypreciousplone
-
How to unit-test Plone?
All students working on Plone projects must unit test their Plone products. Please learn to write professional code by writing unit-tests as you code.
-
Authenticate Plone 2.5 with OpenLDAP?
- See these 2 links:
- @ Plone Site
- Short Description
- Enable change password
Final Year Project (FYP)
-
Interim Report Format
The interim report should be formatted exactly like a FYP final report, except that the first few chapters should be more or less completed, and may contain shorter/empty/incomplete/partial content for later chapters.
Interim reports must be submitted by checking in the source files to your assigned svn repository. No email or physical submissions.
-
Final Report Format
Your report must be typeset professionally in either LaTeX or Open Document Format. Openoffice users must download the OpenOffice FYP template . All pictures and diagrams should be created electronically. It should contain the following chapters:
- Abstract/Acknowledgement
- Introduction
- What is the motivation for pursuing this topic?
- Related Work
- Describe what other people have done in similar areas, critique their approach.
- Approach/Architecture/Theory, e.g. "Chapter 3: Designing a Plone Groupware portal"
- Include UML diagrams, Class Collaboration diagrams, Activity Diagrams, Data Flow Diagrams, etc.
- Describe your contributions here
- Experiments/Tests, e.g. "Chapter 4: User Evaluation of the Portal"
- What are the shortcomings of the product during actual end user tests?
- For product development, you must include test cases for white box tests, black box tests, integration tests, etc.
- Screenshots
- Conclusion
- Pros/cons of your approach
- Future work
- Reference
- All non-original pictures, figures, diagrams, text, equations must be properly cited. See FAQ on plagarism
-
FYP Plan
Please upload your FYP strategy & Plan to the SVN repository by the deadline under:
https://svn.mosuma.com/r4000/doc/reports/bs/{yourloginname}/
see svn FAQ for uploading instructions.
Format of FYP plan: you must use the provided FYP Final Report template
Your content can be very simple, comprising just the following items neatly arranged in the first chapter of your FYP report. The first chapter need not be complete (1 page, 2 pages, any length is ok) but should contain the following sections (or any other sections you deem appropriate):
Chapter 1: Introduction
- Motivation
- Tell a story. Put on your salesman hat as if you are sell ing snake oil. If you cannot convince yourself this is great, modify the scope.
- Why are you doing this? Other than "I have no choice but to select this project". Keep in mind that I would allow you to pursue and define an alternative project scope if you are not interested in the assigned project.
- Who would use this? Would you? If the answer is no, you need to seriously rethink your project scope.
- What are existing solutions on the net. Do a brief survey
- Objectives
- What are you trying to accomplish?
- Define your goals clearly. E.g. create a program that can download 75,000 pictures in a day and classify them into pretty, ugly within 100 years.
- Plan
- Deliverables
- Technologies to use/learn
- Software modules to create : rough sketch is fine
- Data to collect : e.g. pages to download
- Experimental evaluations, e.g. are you going to test it on guinea pigs. How many? Where?
- Project Timeline
- Milestones (define major milestones, not 100 small ones)
- Gantt chart (at the week resolution), you should use the online project manager tool provided, which allows me to check and update your plan anytime. You can use a screen capture utility to dump this online plan to the report, don't waste time using Microsoft Project to create a beautiful plan.
You must upload your fyp plan in the prescribed format to the SVN repository by the deadline.
- No email/physical submissions accepted.
- No excuses for encountering problems with the uploading at the last minute. You are supposed to figure it out long before the deadline.
Lastly, since this is just a plan, things can change. Don't worry about change. Change is good. The only constant in life is change.
- Motivation
-
Draft/Amended FYP Report
All students
- Please read through my FAQ on plagarism
- I need a signed hardcopy of the declaration of original work from you. Please submit it to the GO, or along with your hardcopy report.
My Students
- Submit your FYP draft report as you did for your FYP interim report, by checking it into SVN and let me know:
https://svn.mosuma.com/r4000/doc/reports/bs/{yourname} - I will annotate/comment on your FYP report electronically and upload the latest version to the svn repository and send you a notification email.
- Please go through the annotated/commented report carefully, and make changes according to my comments prefixed with
kuiyu. You could search for the text stringkuiyu. - Email me after you have finished amending the FYP report and uploaded the source file including all figures and bibliography (where applicable) files to the svn repository:
https://svn.mosuma.com/r4000/doc/reports/bs/{yourname} - Also generate and upload a PDF version of your amended FYP report to the repository
- Ask your examiner if he/she preferse a soft/hard/both copy. Print out a hard copy for your examiner unless he/she tells you in writing/email that he does not want one.
- Email your examiner a pdf soft copy of your FYP report if he/she specifically asks for one.
- No need to give me a hard copy of your final amended report. You need not print out a hard copy of the amended FYP report! Save some trees!
My Examinees
- You are welcomed to submit your FYP report to me in one of the following formats:
- A single pdf file (preferred)
- hard printed copy
- Once I have gone through your hard copy FYP report, I will send you a notification email to meet up with me for
- A brief demo of your project (where applicable)
- you to pick up the annotated/commented hard copy of your FYP report (where applicable)
- Amend your FYP report accordingly, and
- email me the soft copy of your amended FYP report before the announced deadline. Please note that
- A single PDF file is preferred.
- Microsoft Word files are considered invalid.
- Check acceptable electronic formats
- Submit the annotated hardcopy (where applicable) to me via the General Office (GO). Yes, this is the annotated hard copy with all my markings, please return it to me, I need it to cross-reference with your amended report.
- email me the soft copy of your amended FYP report before the announced deadline. Please note that
- No need to give me a hard copy of your final amended report. You need not print out a hard copy of the amended FYP report! Save some trees!
- Examinees must not throw away the annotated/commented/marked copy collected from me, instead please return the annotated copy so that I can verify your changes.
-
FYP Presentation
- Duration
- 20 mins presentation + 5 mins Q&A
- Content
- Please cover the following in at most 20 slides:
- Very brief introduction/motivation
- At most 2 slides
- Problem statement
- What problem are you trying to solve?
- Your solution/product
- Brief Architecture of your product/solution
- Why is your solution/product good?
- Compare with existing solutions! Table comparison is the best! Your product/solution versus other brands.
Feature
My Product
Competitor X
Competitor Y
Edible?
Yes
No
tastes bad
Can do XYZ
Yes
No
Cost $$$
Speed
Fast
2X slower
10x slower
IdiotFriendly?
Yes
Hard to use
Crashes
- Your Contributions
- What have you contributed/created? How many lines of code?(exclude reading and learning time)
- What proportion of the product/solution includes prior/existing source code? 50%, 75%?
- Conclusions & Future Work
- List limitations of your solution/product
- List possible improvements (be frank!)
- General Guidelines
- Relax
- Dress like a car salesman (get the point?), i.e. shirt & tie for men, office attire for ladies.
- Please do not mention what you have learnt, this is not the key point of your project. Remember, you are trying to sell your product/solution to an audience, not selling how hardworking you are.
- As few words as possible on each slide.
- As many pictures as possible on each slide.
- Demo portions of your product only if it is less than 3 minutes from start to end.
-
How to Start your FYP / URECA / UROP / Project?
1 See me for a chat. Please drop by my office after consulting my online weekly schedule. Give me a call before you do to make sure I am in.
2 You will be given a single login/password to login to this site and the subversion repository. Your login will be emailed to you, and your initial password will be sms to you.
3 Please change your password once you login to this site. I will be using the collector (tab) to track your FYP progress, the repository will serve as the source code & documentation storage.
4 A subversion repository will be created in your name for you to access with URL
https://svn.mosuma.com/r4000/doc/reports/bs/{yourloginname}5 Install all the necessary tools for your FYP project. You must install the following bare minimum set of tools (see FAQ)
a Ubuntu Linux or cygwin (on windows)
- If you are fortunate to be assigned to the DB Lab, once you installed Linux on a dedicated machine, you can leave it on and running, and remotely ssh into it (via VPN from outside NTU), and work on it without even physically going to the DB Lab!
- If you are assigned to any other lab or center, you are out of luck. Better to work on your own PC than to waste time there. Why? Singapore's rulebook mentality means that in those labs, officially
- you are not allowed to install anything on a Windows machine because they are shared.
- If you are lucky enough to install Linux or get an account on a Linux cluster, you are not allowed to install anything outside your home directory.
- Some labs allow you to install Linux, but you are not given the root password. That means if you want anything installed, the lab technician must physically sit beside you and do that for you. This is a huge waste of your time.
A simple analogy is a car mechanic apprentice learning with a car that has its hood sealed shut. So all he/she can do is to touch the surface of the car, without knowing anything about the inner workings of a car.
In fact, the vast majority of SCE labs/centers have long forgotten that the sole reason for their existance is to serve the students. Sounds familiar? On the contrary, they enjoy tying student's hands and feet by designing self-serving rules to simplify their management by minimizing their work.
b OpenOffice 2.1 or higher
c Subversion client
- Windows users are strongly encouraged to download "Tortoise SVN":http://tortoisesvn.tigris.org/ after you have tried the command line tools
6 Download FYP template from the "documents" tab. Start writing your report! Yes, the earlier you start, the less painful it is. And it will be a breeze for you towards the end of the FYP, by when the report would have been finished!
7 For the first 2 weeks, you should do the configuration of tools, and also a survey of your FYP project. Write down your survey results in your FYP report Chapter 2. Then start defining your problem in Chapter 3, along with its proposed solutions. Don't worry about the content and structure, it can always be modified later.
8 Make sure you read my FAQ on plagarism! There is also a sample posted outside my office. Do not copy or lift any material! The penalty for doing so is FYP failure and/or termination from University.
9 Start getting use to SVN and checking in your FYP report to the SVN repository
https://svn.mosuma.com/r4000/doc/reports/bs/{yourloginname}10 Later on, I will email you on where you can check in your source code and documentation. In principal, large files should always be checked into the repository. Use email only for logistic (e.g. scheduling demo/meetings) and generic (non-technical) questions. All technical questions/updates should be done through you assigned collector issue.
11 Arrange for a suitable time to meet face to face
- once a week during term time
- twice a week during holidays
12 Make sure you update all (by browsing your issue, and clicking on the "Follow up" option to add a comment) collector (see "collector" tab) issues assigned to you
- once a week on or before every Sunday 11:59 pm.
FYP students who fails to update their issues promptly for more than half of the 52 weeks (or duration of FYP) of a year would have effectively failed their FYP.
13 Please update your personal info, especially mobile phone number, whenever necessary through the website addressbook
-
Continous Assessment
First and foremost, a very warm welcome to my research group!
Your FYP/URECA is a 10-month long endeavour starting from [June - March] [December - October] with an expected work load of 10 hours per week. I plan to meet up with you once a week to check on your progress.
One of the goals of the FYP/URECA is to ensure that you produce consistent work output in every of the 10 month, just as you are expected to when you go to work after graduation. Thus, you will be graded for every month starting from June/December using a simple binary system (pass/fail).
You earn a pass for every month that
- You produce satisfactory progress or
- in lieu of satisfactory progress, you attend ALL regular planned meetings for the month, i.e., weekly and I am convinced that you have made a good faith effort/attempt to tackle the problem (limited by your I.Q.)
You shall fail that month if:
- You have not made satisfactory progress and you miss more than 2 planned meetings per month for whatever reasons, MCs, family problems, emotional issues, work, IA/IO, etc.
- You meet me every week for the month without showing any satisfactory progress
- You ask me to debug your source code (in which case, why don't I just do your FYP/URECA for you and get the full credit?)
If you pass all 10 months, that means the maximum score for your FYP/URECA is 10x10 = 100%. If you only passed 5 of the 10 months, your maximum attainable FYP/URECA grade is 50%.
The same grading scheme will apply during examination month, holidays, vacations, acts of gods, disaster, etc., meaning that realistically, you will have a 80% maximum attainable grade, which corresponds to an A grade.
Thus, every month of your progress counts. This ensures that if there is a prolonged period of absence/inactivity/stagnation on your part, you are guaranteed to fail your FYP/URECA.
For example, if you fail 5 out of the 10 months, and work extremely hard on the remaining 5 months, you will at most earn a passing grade of C, in the best scenario. The method for computing this final score is a simple hard threshold:
if score > max_score then score = max_score
KRG Standards
-
Acceptable File Formats
For students submitting electronic copies of their work to KRG, only the following listed open standard formats will be accepted:
- Plain Text (.txt)
- OpenDocument (.odt)
- LaTeX and related (.tex, .bib, .cst, .dvi)
- Use line breaks generously!
- Break a line (by typing enter/return) after every 70-80 characters. So that your text file is compatible with text editors like vim and emacs.
- LaTeX ignores extra linebreaks or spaces, so please use line breaks generously!
- Adobe Acrobat (.pdf)
- Postscript (.ps, .eps)
Submissions in any other formats will be deemed invalid. Please see Richard Stallman's view on Microsoft Word documents
Acceptable compression formats include:
- zip (.zip)
- tar (.tar)
- gz (.gz, .tgz)
-
How to write your name in English properly?
Despite what most of you have been exposed all your life, the correct way of spelling your name in Latin Languages is:
FirstName MiddleName(sometimes abbreviated) LastName
For example,
- William Jefferson Clinton or William J. Clinton
- William Henry Gates III
- Michael Saul Dell
- John Davison Rockefeller
Chinese Names written in English
If you have a Chinese name, you should at least follow the basic convention accordingly:
Mo Rong LeeMiddle Name, not!
There is no concept of Middle Name in Chinese, e.g., "Rong" is NOT the middle name in "Mo Rong Lee"! "Rong" is as much a middle name in "Mo Rong" as "Sus" is the middle name in "JeSus". If you disagree, just think of it this way:
- if friends of Mr. Lee address him by "Mo", than yes, his middle name is Rong
- if friends of Mr. Lee address him by "Morong", than, he has no middle name, i.e., Morong is considered as an integral first name!
This is what "first name" means in Latin languages, the name that your friends address you first. In fact, if first name should appear in any places other than the first position, it should not be called "first name" in the first place. Pardon the pun.
Thus you should concatenate or hyphenate your two romanized chinese characters together so that people will not confuse your middle character as the middle name:
Mo-rong Lee or Morong LeeHyphenation is easier to read for the 4.7 billion of non-Chinese in the world. You may optionally capitalize the second syllable of your hyphenated first name:
Mo-Rong LeeBut that is not adviced, since the hyphen already helps people to pronounce your name properly, and if you capitalize the second syllable, it may be construed as a "middle" name!
Adopted English Names
If you have adopted a classical English name like Jack, the correct way is to either use it as your first name or middle name:
Jack Mo-rong Lee Jack M. Lee Mo-rong Jack Lee Mo-rong J. LeeBastardized English Names
Please do not use the bastardized English naming convention of LastName FirstName:
Lee Mo Rongso commonly found here in Singapore. It will only confuse everyone outside of Singapore.
Do you want to go global or do you want to sit in your well?
Please do not enclose the adopted English name with brackets:
Mo-rong Lee (Jack) : which means he is a type of "Jack"or put the adopted English name after a comma:
Mo-rong Lee, Jack : which means his last name is "Mo-rong Lee" and first name is "Jack"!Japanese Names written in English
Even the Japanese know how to write their names properly in English:
Junichiro Koizumi 小泉纯一郎 Seiko Matsuda 松田圣子
Conclusion
The general rule-of-thumb is, as long as you are spelling your name in Latin language, follow the Latin convention. If you insist on following your own language convention, why not just write the name in your native language, e.g., for Chinese:
李模荣If you still insist on writing Last name first, then, you should place a comma after your last name, this is the accepted practice for Latin-based names:
Lee, Mo-rong Lee, SpikeThe most unambiguous way to make sure that everyone outside of Singapore understands your first/last name immediately is to BOLD/ALLCAPS/underline your lastname:
Mo-rong LEE
Arabic Names
Too complicated for me to grasp, please see Arabic Name (wikipedia)
-
Acceptable Email Attachments
Please do not send attachments as HTML or RTF via Outlook.
Always, send plain text.
Otherwise, the recipient not using outlook will simply receive a human unreadable binary file winmail.dat that can only be opened by outlook.
See description of problem
About Kuiyu
-
How to meet Kuiyu?
Please do not email me asking for an appointment, be more bold and direct!
Please first check my time table, and if I am not engaged at your preferred time slot,
- For brief (less than 30 minutes) consultation without prescription, please feel free to drop by my office anytime, you might want to give me a ring +65 6790-4293 just to make sure I am in
- Give me a ring to confirm/schedule a future appointment if your agenda requires more than 30 minutes
- If you have no access to a telephone/cellphone, or you have phone-calling phobia, please email me three of your preferred time slots, but my response may not be immediate and your priority could be much lower than someone who called, as I have email phobia ;-)
-
How to get a recommendation letter or testimonial from Kuiyu?
I will gladly write recommendation letters or testimonials for students who I recognize and whom have
- passed at least one of my subjects with an A- or better grade, or
- been under my supervision as a Doctoral, Master's, or Bachelor (FYP, UROP, URECA) degree student and received an A- or better grade
Recommendation letters (N = # copies)
- normally take 10 business days to go through my queue of to-do list. Please send in your request early (preferrably a month in advanced).
- can be (your choice)
- mailed directly to the institution of choice [please provide N addressed and stamped envelopes], or
- handed over to student personally in a sealed and signed envelop [please provide N addressed envelopes]
- mailed to student [please provide N regular addressed envelopes, and 1 large stamped and self-addressed envelope]
Testimonials can be
- handed over to the student in person, or
- mailed to student [please provide 1 stamped and self-addressed envelope]
Doing good research
-
Writing a good paper
A good paper should contain the following sections, in approximately the following order:
- Abstract
Write in as few words as possible what problem you are tackling, the ways you have devised to solve the problem, and the results you have achieved. Also make a brief reference to how great your achievements are compared to existing work. A good abstract should not be simply a copy of the first introductory paragraph and final conclusion, but a completely re-written portion that tries to summarize the essence of the paper. Think of it as your 30 second introduction/pitch of your work to a complete stranger in an elevator. Try to captivate the audience, to compel them to read the full paper.
- Introduction/Motivation
What is so interesting about your problem? Historical context, with some reference to other people's generally similar work. What other people have done to solve this?
- Related Work (could be merged with introduction and/or conclusion)
What have other people proposed that is very similar to your approach?
- Description of your approach/model/architecture
You can include mathematical definitions, theories here. For implementation specific topics you can include the architecture and design here.
- Experimental Results and/or implementation (screen shots)
- Datasets: describe each dataset clearly and quote its sources
- Methodology, Algorithms, hardware setup, programmign language used
- Results/graphs/charts
- Implementation issues
- Benchmark against other methods, or against time using various sizes of test data
For a new proposed approach, you need to compare with at least 2 established approaches to make yours convincing
- Discussion of Results
- Discussion
This section can be merged with the previous or the following section.
- Conclusion and Future Work
Mention what future work is needed, or point out future directions. Also describe possible practical applications of your work.
- Acknowledgements
If your research was supported by research grants, here is a good place to mention them such as
This research was supported partially by XXX research grant no. ####, and YYY, .... Also acknowledge people and reviewers who have helped you in refining your paper or performing your experiments. - References
Please quote all references here using BibTex.
- Abstract
-
That vs Which
Jack Lynch:
- If you are restricting something by distinguishing it from a larger class of which it is a member, use **“that”**:
I chose the girl that has the sweetest smile.
Note that this implies there were other girls.
- When the general class is unrestricted, then “which” is appropriate:
He chose two girls, which didn’t turn out quite well.
Note that this does not imply there were other girls.
- “which” is normally preceded by a comma, but “that” is not.
- If you are restricting something by distinguishing it from a larger class of which it is a member, use **“that”**:
Industrial Attachment (IA)
-
IA Report Content & Format
- Length
- 10 - 20 pages (including everything)
- General Guidelines
- Your IA Report is not a dressed up retyped Log book, what you put in your IA Report should be a high-level summary/overview of your IA experiences. Retyping your log book is a huge waste of your time. If you have that much typing time, why not use that time and your brain to think, analyze, and summarize your IA experiences, e.g. ask yourself the questions listed below in the content guidelines.
- I have seen IA students copying pages of user manual as their IA report, this is a waste of both your time and my time.
- Your Report need not contain a cover page, Table of Contents, or List of Figures, but it must contain references if you lift or copy stuff from other places.
- No need to include source code. I won't be reading them. Further, it might be proprietary.
- You might want to include a few representive screenshots of products you developed at the company when you are writing the section about your project.
- Content
- Your report should be typeset professionally in either LaTeX or Open Document Format. All pictures and diagrams should be created electronically. It should contain the following sections:
- Abstract/Acknowledgement
- Thank your IA company supervisor or any people who have helped made your life easier at the company.
- Introduction
- What is your role/job at the company?
- Descri
