Hi! This is Sunny! Currently studying a bachelor degree in Computer Engineering. I am interested in all sorts of things related to the world of computer science. Aside from things academic, I sometimes play badminton to get some exercise in. I also really love food.
Languages:
Programming languages:
Markup languages:
Other technical skills:
Things I am actively learning:
You can see a list of all courses taken at HKUST here.
A System View of Communications: from Signals to Packets
ELEC 1200
A System View of Communications: from Signals to Packets (ELEC 1200)
Have you ever wondered what technologies go into your mobile phone or a WiFi hotspot? Through hands on work with a simple but fully functional wireless communication system, you will understand the basic engineering tools used and tradeoffs encountered in the design of these systems. This course is centered on weekly laboratories, each designed to introduce an important concept in the design of these systems. The lab sessions are supported by two one-hour lectures and a tutorial that introduce the concepts for the next laboratory, as well as reviewing and expanding the concepts learned in the previous laboratory.
The introduction of signal processing was interesting. It equipped me with some basic knowledge regarding this field, and introduced basic forms and applications of commonly-used algorithms.
Object-Oriented Programming and Data Structures
COMP 2012
Object-Oriented Programming and Data Structures (COMP 2012)
To learn the fundamental concepts and techniques behind object-oriented programming. They include: abstract data types; creation, initialization, and destruction of objects; class hierarchies; polymorphism, inheritance and dynamic binding; generic programming using templates. To learn the object-oriented view of data structures: linked lists, stacks, queues, binary trees, and algorithms such as searching and hashing.
This course introduced me to the world of object-oriented Programming (OOP), a widely-used programming model that is useful for most programming task I encounter. This pushed me towards a large number of possible topics in the world of computer science, some of which I took courses on and are stated below.
Discrete Mathematical Tools for Computer Science
COMP 2711
Discrete Mathematical Tools for Computer Science (COMP 2711)
Basic concepts in discrete mathematics needed for the study of computer science: enumeration techniques, basic number theory, logic and proofs, recursion and recurrences, probability theory and graph theory. The approach of this course is specifically computer science application oriented.
This course taught me a lot of basic mathematics skills and tools required for computer science topics later on. From graph theory to counting methods, it prepared me for more difficult courses, e.g. machine learning and algorithm courses.
Exploring Artificial Intelligence
COMP 2211
Exploring Artificial Intelligence (COMP 2211)
This course aims to give a gentle introduction to the basic elements of artificial intelligence (AI) through understanding examples from various applications and hands-on experimentation using AI software tools. In addition to covering the technical aspect of AI through such topics as search and problem-solving, knowledge representation, probabilistic reasoning, machine learning, computer vision and image processing, speech and language processing, and robotics, this course will also study the historical perspective, social and ethical implications, as well as potential and limitations of AI.
This course has a focus on machine learning (ML), which is highly beneficial for any ML courses I will take in the future. From image processing to natural language processing, this course had tasks that familiarized me with ML concepts and relevant coding libraries (e.g. Numpy & Tensorflow). Aside from ML, the course also taught me minimax algorithms and other non-ML AI technologies and their implementations.
Java Programming
COMP 3021
Java Programming (COMP 3021)
Introduction to Java programming. Fundamentals include language syntax, object-oriented programming, inheritance, polymorphism, exception handling, multithreading and lambdas. Standard libraries for input/output, graphics programming, built-in data structures. Programming for events, generics and higher-order functions.
This course further strengthened my ability in OOP, with different types of implementation of object inheritance and interfaces in the Java programming language. It also introduces concurrent and functional programming, which bridges to a wide range of applications, namely software development. Java, being one of the most popular programming languages in the world, is something I believe important to know in terms of software development.
Honors Software Engineering
COMP 3111H
Honors Software Engineering (COMP 3111H)
General methodologies, techniques, and tools for planning, designing, implementing, validating, and maintaining large-scale software systems. Collaborative development environment, automatic static analysis, and testing techniques. Open source project development methodologies and techniques.
This course taught me how to accept ideas and concepts from others and turn it into concrete software code. It was also a very important experience that let me understand what difficulties one may encounter when trying to cater to a variety of requests and translate them into implementable ideas.
Operating Systems
COMP 3511
Operating Systems (COMP 3511)
Principles, purpose and structure of operating systems; processes, threads, and multi-threaded programming; CPU scheduling; synchronization, mutual exclusion; memory management and virtual memory; device management; file systems, security and protection.
This course introduced me to concurrent programming from a low-level perspective. The questions I've always had in my mind, e.g. "How does an OS work?", "When the CPU has multiple long tasks how are they dealt with?", are answered. It also provided me an opportunity to implement a (albeit subpar) shell with C.
Design and Analysis of Algorithms
COMP 3711
Design and Analysis of Algorithms (COMP 3711)
Techniques for designing algorithms, proving their correctness, and analyzing their running times. Topics covered include: sorting, selection, heaps, balanced search trees, divide-and-conquer, greedy algorithms, dynamic programming, and graph algorithms.
This course demystified what algorithm analysis is. While the course had more focus on the analysis part of algorithms, I learnt a lot about commonly-used algorithms, and which to apply depending on situations. I'm sure knowledge here will be useful in the future.
Introduction to Natural Language Processing
COMP 4221
Introduction to Natural Language Processing (COMP 4221)
This course provides an introduction to the tasks, models and algorithms of natural language processing (NLP) including the fundamental NLP tasks and models (such as language model, text classification, word vectors, sequence labelling, etc.), and several typical NLP applications (such as question answering, dialogue systems and machine translation, etc.), and the linguistic structure annotation (such as constituency parsing and dependency parsing). The course also introduces some advanced topics such as pre-trained language models and their prompt tuning and instruct tuning methods to give the students more perspectives of the NLP industry.
This is one of the first courses I took that dives in the fields of ML/Big Data Technologies. It introduces machine learning on spoken/text languages and context-based approaches to machine translation. I hope I will be able to apply knowledge acquired here to other ML courses in the future.
The Art of Thinking in the Hong Kong Context
HUMA 1710
The Art of Thinking in the Hong Kong Context (HUMA 1710)
This course aims to provide a basic introduction to the art of thinking. The focus of this course is on methodology. Students will be equipped with critical tools for the analysis of arguments. Moreover, special attention will be given to the application of such tools to the practical affairs of everyday life.
A course I really wanted to take for my Humanities minor. This course isn't particularly difficult, but it introduces a philosophical look on our daily lives. I was introduced to logical thinking and the pitfalls of language. It allowed me to more accurately phrase things I want to say by making me more aware of the ambiguities that could occur in normal conversations. Overall, it was an indulgence of my interest in Humanities, particularly things related to linguistics.
Undergraduate Teaching Opportunities
IDPO 2910
Undergraduate Teaching Opportunities (IDPO 2910)
This course aims to provide students with real-life, hands-on learning and teaching experience. Students will take part in lesson preparation, actual teaching and reflection session. Training on teaching skills and consultation with faculty will be provided to ensure the quality of students’ teaching.
This is a course that lets student gain experience on teaching actual secondary students with a topic of their choice. It helps with my communication skills and how I can interpret/explain concepts and ideas, which is beneficial from a soft-skill perspective. It was an interesting experience having to deal with requests from multitude of stakeholders and balance them while ensuring lessons delivered were of good quality.
Coming soon. Click "Show All Semesters" above to see other semesters!