CS3216: Software Development on Evolving Platforms
Semester 2, AY2008/09 (January-May 2009)IMPORTANT ANNOUNCEMENT: A make-up information session will be conducted on 9 Dec (Tues) at 4.30 pm in SR3 (COM1/212). Students who are keen to register for CS3216 should come find out more and to ask questions!
We will be offering CS3216 for the second time in AY2008/2009 Semester 2. While students will still be developing at least one Facebook application, the class is, as its name implies, evolving. We are currently working out a collaboration with Microsoft to introduce WPF/Silverlight for an app that involves the development of a app supporting "disconnected" operation. Under the proposed deal, Microsoft will provide help in the development of the assignment and arrange for training sessions for both the teaching staff and students. They will also provide technical support for the students during the assignment and if any group should decide to
The class is evolving because of our experience last semester. First, the number of assignments will be reduced to two to reduce workload; second, the quality of the students who sign up is extremely high and it is an overkill to do multiple Facebook assignments. One assignment is sufficient to give them a feel for the development process.
Since laptops and wireless access is ubiquitous, it is timely for students to be introduced to the new space of hybrid desktop (laptop) programs. We were initially planning to introduce Adobe Air, but Microsoft came along and offered us a hard-to-refuse deal in teaching support. Since the Microsoft deal, Google has also come a-knocking and we're discussing possible collaborations. Depending on how discussions pan out over the next few weeks, Google might provide technical support for OpenSocial-based Final Projects catering to the Chinese and Indian markets.
The report that submitted to the SoC Curriculum Committee at the conclusion of the first offering of the course is available here. Most of the changes that we are introducing next Semester is in response to our experience last semester. CS3216 was pretty successful last semester - though it did have some rough edges, not unexpected for a first try. We hope that it will be even better next Semester.
CS3216 is not a module for everyone. It is an elective and is suitable only for students with PASSION and who want to "make a difference" with their lives. Students who are keen only to get good grades and to find a mundane job should give this module a pass. :-)
Module Information
Modular Credits: 4 MCs
Workload: 1-1-0-5-3
Pre-requisites: A good grade in CS1101 or its equivalent, or strong design background with instructor's approval. To ensure a diversity of experience and background in the class, students will submit personal statements to apply for a place in the course instead of bidding through the CORS system.
Preclusions: Nil
This new module is not your traditional software engineering course. Enrollment will be open to students of all faculties and students will work in small inter-disciplinary teams to create their killer Facebook applications. Programming experience for non-SoC students is not a pre-requisite (since work will be done in teams).
This 4-MC module is suitable for students with a strong programming background and high confidence in picking up new programming languages on-the-fly, and students who do not have extensive programming experience but who have a strong design background or entrepreneurial aspirations.
Click here for AY 2007/2008 course information sheet. Course content for AY 2008/2009 is still under preparation.
Teaching Staff
| Lecturer: | Dr Ben Leong (benleong
at comp.nus.edu.sg) S14 #06-14 Tel: 6516 4240 |
| Teaching Assistant: | To be announced |
| Undergraduate Tutors: | Chris Henry (chrishenry at nus.edu.sg) |
| Other Tutors be confirmed |
Aims & Objectives
In this module, students will learn to create Internet applications. For this semester, the target platforms are Facebook and Microsoft WPF/Silverlight.
Students are expected to work independently in small, interdisciplinary teams to design, develop, and deploy new applications. Students will also have the opportunity to explore the latest Internet programming APIs and open-source tools. This experiential programming module involves extensive hands-on learning in small team projects.
Students will also work together in small teams to study and critique existing Facebook applications. The teams will then present their findings to their classmates during weekly seminars in the middle of the course.
The learning objectives of the module are as follows:
- To understand how to source for and use open source software and APIs.
- To learn to develop engaging and innovative web applications
- To experience working in multi-disciplinary teams to create Facebook (web) applications
- To learn a new programming language independently
- To improve presentation and communication (both oral and written) skills
Past Projects
The following are links to the apps that were developed by students last semester:
- Assignment 1 - A New Hello (week 2)
- Assignment 2 - The Wall Strikes Back (week 3)
- Assignment 3 - Return of the Cow (week 5)
- Final Project
Assessment
This module does not have exams. Students will be assessed on their performance on assignments, at the presentation and on the final project, as follows:
- 20% - Facebook Assignment (week 3)
- 20% - WPF/Silverlight Assignment (week 6)
- 10% - Presentation for in-class seminar
- 10% - Participation
- 40% - Final Project
Students should not be concerned about grades for this class. The class is expected to be small and therefore will not be graded on a curve. Grades assigned will be commensurate with the quality of the work produced.
Teaching Modes
| Lectures/Seminar: | 2 hours per week (Monday 6.30 to 8.30 pm, Venue TBA) |
| Optional Workshops: | 2 hours per week (Weeks 1 to 3) (Times and Venues TBA) |
This module has very few contact hours. Most of the learning is expected to be hands-on learning in doing projects. The class will begin with a series of lectures that are designed to provide students with an overview of Facebook programming and the fundamentals of web programming.
We will have a Facebook application seminar where teams of students will each present and discuss an existing Facebook application. Each team of students will have 15 minutes for their presentation and three groups will present during each seminar. The presentations will be followed by a short discussion facilitated by the lecturer.
The presentations by the teams should cover the following points about an existing Facebook application:
- Description of the application
- How the application is implemented
- What is good, bad and ugly about the application
- Suggested improvements
- Commercial potential
- New app(s)/business models/ideas arising from studying the application
In addition, guest lectures will be arranged for professional web and Facebook developers to come share their experiences with students.
Schedule
The class schedule for AY2008/2009 is still in the process of being arranged. It is likely to be similar in spirit to schedule for AY2007/2008:
| 14 Jan 2008 | Lecture: Introduction to CS3216 & Anatomy of a Facebook Application | Dr Ben Leong | 2 hours |
| 21 Jan 2008 | Lecture: Principles of Software Engineering | A/P Stan Jarzabek | 2 hours |
| 28 Jan 2008 | Pitching Session for Final Projects | Dr Ben Leong | 2 hours |
| 4 Feb 2008 | Lecture: User-Centric Web Applications | Dr Klarissa Chang | 2 hours |
| 11 Feb 2008 | Lecture: Facebook Development with Rails | Mr Jeff Lim | 2 hours |
| 16 Feb 2008 | Final Project Pitching Party (by students) | Mr Kelly Choo | |
| CS3216 Talent Show | |||
| 18 Feb 2008 | NO CLASS - Working on Final Project Proposals | ||
| 23 Feb 2008 | MIDTERM BREAK - NO CLASS | ||
| 3 Mar 2008 | Code Review Session for Assignment 2 | Dr Ben Leong | 1 hour |
| Guest Lecture: Facebook & Security | Mr Chiang Kai Er | 1 hour | |
| 10 Mar 2008 | Facebook Application Seminar | Dr Ben Leong | 1 hour |
| 17 Mar 2008 | Beyond the hype of Facebook: Sustainable Applications and Approaches for Monetization | Dr Andreas Weigend | 2 hours |
| 19 Mar 2008 | Techniques and Pitfalls in Provisioning for a Million Eyeballs | Mr Lai Zit Seng | 1 hour |
| Facebook Application Seminar (continued) | Dr Ben Leong | 1 hour | |
| 24 Mar 2008 | Understanding the *REAL* World: A Plenary Session with Local Entrepreneurs | Mr Marc Goh, Mr Paul Yeo, Mr Ash Singh, Dr Kuo-Yi Lim, Dr Sivam Krish, Mr Chin Kwek Loong & Mr Ng Chin Leng | 2 hours |
| 31 Mar 2008 | Guest Lecture: Exploiting Open Source for Fun & Profit | Mr Harish Pillay | 2 hours |
| 7 Apr 2008 | Guest Lecture: Google Web Toolkit (GWT) | Mr Ho Wee Chong | 2 hours |
| 14 Apr 2008 | ISM Presentation: Developing Applications for Multiple Social Networking Platforms | Mr Zheng Junyi | 1 hour |
| The Last Lecture | Dr Ben Leong | 1 hour |
The following was the workshop schedule last semester:
| 17 & 21 Jan 2008 | Getting Started with SoC Zones and UNIX | Chris Henry | 1 hour |
| 22 Jan 2008 | PHP & MySQL | Gao Shan | 2 hours |
| 1 Feb 2008 | XHTML & CSS | Chris Henry | 2 hours |
| 5 Feb 2008 | Basic JavaScript | Benny Ou | 2 hours |
| 12 Feb 2008 | Introduction to AJAX | Benny Ou | 2 hours |
Assignments
The assignments for this class are carefully designed to equip students with the requisite skills and knowledge to develop and deploy their own Facebook applications. This module is not a core programming course and we will not be teaching programming as a subject per se. Students can choose to do the assignment and projects in a language of their choice, though it is very likely that most students will choose to work in php/Ruby with mySQL.
Non-SoC students who have limited programming experience will be teamed up with students with programming experience and they are expected to pick up some programming skills from their peers. As it turns out, developing good web applications involves more than just programming and thus cross-faculty students will still have ample opportunity to contribute to the team assignments and projects (and pick up some programming along the way).
There will be three assignments, which we call "The Trilogy", and they will be completed during the first half of the semester. The following is a brief description of the three assignments:
- A New Hello. For this assignment, students will work in pairs to develop a very simple Facebook application that prints a text message. The purpose of this assignment is to familarise students with the Facebook platform and how to deploy a simple web application. This is also an opportunity for peer-learning as the students with limited programming background will be paired with the experienced programmers.
- The Wall Strikes Back. In this assignment, students will work in teams of three or four to develop a simple application that allows users to post messages on a Wall. The purpose of this assignment is to let students practise integrating a database into their web applications. Since some students might not have taken CS2102 (Database Systems), we will probably conduct a short SQL tutorial to equip students with sufficient database/SQL knowledge to complete this assignment.
- Return of the Cow.In this assignment, students will work in teams of three or four to develop a simple application that allows users to interact with other users. The exact form of interaction is let to the students. It does not have to be throwing a cow. The purpose of this assignment is to let students practise manipulating user data in their applications (since users will be allowed to choose a friend at which to throw a cow) and to issue invites for new users.
We believe that these three assignments would equip the students with the necessary skills to work on the final project. More details on these assignments will be provided at the start of the course.
Final Project
Students will work in teams of three or four for the final project. In this project, the students will develop and deploy a Facebook application of their choice. A project proposal will have to be submitted at the end of the mid-semester break and the teams are expected to work on the final projects during the second half of the semester.
There are no limits on what students can do for the final problem, though the expectation is that it must be a "cool" application of sorts. The following are possibilities:
- A new Facebook-based game;
- A new e-commerce application. This can be the basis for a submission to the Startup@Singapore contest;
- Some amusement - cute and useless, but fun(!) and popular;
- A system to help some volunteer welfare organization reach out to volunteers;
- A e-Learning application of sorts; or
- An application to support research on Facebook.
The possibilities are limitless. Students are expected to develop and deploy their final project at least two to three weeks before the end of the semester because the "proof of the pudding is in the eating". Students must get *real* people to use their applications and the popularity of their application is one (but not the only) criteria for the evaluation.
On the last week of class, students will be asked to make a 5-minute presentation on their projects in a lecture theatre to a panel of judges (to be determined). The presentation will be followed by a three-hour poster session in the SoC student foyer. The judges and other members of the SoC and NUS will be invited to come for the "show and tell". It will be fun(!).
References
At this time, Facebook is such a new platform that the books we found on Facebook programming will only be published in 2008. We are currently in the process of reviewing some other books for use as references and the list of reference books will be provided at the beginning of the course.
Fortunately, a lot of references on Facebook programming can be found online. The following is a sample list of references:
- Anatomy of a Facebook Application
- Facebook Developer's Platform
- Getting Started with FB App Development
- How To Write a Facebook App in 10 Minutes
We are in the process of adding more relevant references.
Frequently Asked Questions
The following are the responses to some questions/queries posed by interested students.
1. My friend and I would like to take the module but we are not sure if the groupings of the projects is self-assigned or randomly-assigned. We both have lousy past experiences of uncooperative members and feel that a pure project module would require good cooperation with the group members. So if we are able to choose our own group members, it will be good. So is the groupings pre-assigned or self-assigned?
This is an excellent question. As the assessment will mainly be based on team-based assignments and projects, it would indeed be quite disastrous if one were to get stuck with bad or unco-operative teammates.
The groupings for the assignments will be semi-random, while the grouping for the Final Project (which is really what matters) is self-assigned, i.e. students will form their own teams on a first-come-first-served basis (the last three or four stragglers are of course stuck with each other by default).
What does semi-random for the other assignments mean? We will have a mixer of sorts at the beginning of class (think "speed dating") where students will get a chance to get to known each other. After that session, students will submit a ranked list of whom they would like to work with. Based on this list, we will group students into teams for the various assignments while optimizing for the students' preferences. Idea here is to have students work with as many different people that they like (or at least THINK they like from the mixer :-)) as possible. How else would students get to know other each other to figure out who they want to work with for the Final Project right?
Actually, perhaps a simpler way to view this semi-randomness arrangement is the following: students will get to choose their teammates for the assignments, but they cannot work with the same people twice. It is okay for teams to repeat for the Final Project, where it's a free-for-all. For the first assignment, we will probably be a little more proactive in the pairings because we need to ensure that the non-SoC students get paired up with students who have strong programming background. As it turns out, the Hello World assignment is so simple, that the experienced programmer would not lose out by a long shot by being paired up with a non-SoC student. In fact, there might be a benefit (we'd tell you more at the beginning of class ....).
From the perspective of assessment, this is also fairer. The problem with allowing the same people to work in the same team all the time is that if a team does well, we can't tell if someone is a "free-rider". By getting different students to work in different groups, we get a more holistic (and fairer) assessment for each student.
Learning to work with people and in teams is an important life skill -- and in working life, one rarely gets to choose who he works with (so some randomness does serve a purpose and somewhat models the real world).
2. I would like to join the course but I am a fourth year engineering student. I would like to check with you whether this module can counted as one of the core modules for my discipline since I understand that certain SOC module can be considered as core for us engineers.
For EE and CPE students, CS3216 is considered as a Breadth Technical Elective under the Information Processing concentration to fulfil the ECE Technical Elective rules. Non-SoC students from other faculties, will have to check with their own faculties on whether CS3216 can be counted as one of their course requirements (elective or otherwise).
3. I'm from ECE, currently in 4th year. I would like to know if this module can be SU as I might want to take it as a cross fac module.
Because the assessment for this module is heavily weighted towards team projects, based on SoC's current policy, the SU option will not be allowed for this course. The rationale for this policy is that students usually put in less effort when taking the module with SU option, and this will adversely affect the other team members.
Students who have concerns about the grading for this course, should contact the lecturer.
4. I'm very excited about the CS3216 module and i'm interested in taking it next semester. But unfortunately, I got no more Unrestricted Electives left to take it. Currently I'm a 3rd Year Computing student majoring in Computer Science so I'll like to ask if I can take the module as a Core module or Breadth?
As CS3216 is a newly introduced module, it is not currently listed as programme elective in any of the SoC 4-year BComp programmes (CS. CEC, IS, EC, CM and CB), so it is counted as an unrestricted elective. The exception is that it is an Area A1 Programming & Software Engineering elective at level 3, so 3-year BComp students can count it as one of the level-3 module to satisfy this program elective rule by taking modules (12 MCs) from elective areas A1 to A8.
5. I am very interested in this module but I do not have CS1101 as my prerequisite. If I have taken IT1002, CZ1102, GEM1501 and CS3248, which are programming and computing modules, can I take this course? [Query from student from Science Faculty]
Frankly, any student can take this course because the course is about learning how to learn to how to write Facebook applications (and there's no mistake in this sentence). This course is not a course on Web 2.0 programming. This is a meta-course where the goal is to learn how to learn independently and how to make that transition from dream to reality. The question is not whether a student can take this course, but whether a student should take this course.
Because this course is likely to be a demanding meta-course, only students who are highly motivated and are really interested building Facebook-applications should take this course. How much a student will actually take away from the course is likely to be commensurate with the amount of effort put into the course (which is likely to be correlated with the initial interest in Facebook programming). This is NOT a course for students who are trying to decide if they want to develop Facebook applications, but a course for students who already know that it's what they want to do and they just don't know where/how to start and want to get together with an equally-motivated team of students in order to do something cool.
It takes a whole range of skills and talents to develop a successful Facebook application. Programming is a crucial ingredient, but only a pre-requisite and not a guarantee of success. A successful Facebook application requires a cool idea (perhaps a business model or game idea) and also visual design. Perhaps even experience with graphics and/or animation in some cases. The reason why this course is cross-disciplinary is to bring together students of diverse backgrounds for cross-pollination of ideas to take place and for magic to happen.
To get straight to the point, the answer is that based on the information provided, we really cannot say for sure if the student posing the query should take the course, or not. It really depends on how motivated the student is, how well he/she did in the courses related to web programming, and for cross-faculty students, a lot also depends on the supply and demand. There are a limited number of places for non-SoC students and based on what we have seen thus far, the demand is likely to outstrip supply by a fair amount. We will attempt to offer the places to the non-SoC students who seem to demonstrate the greatest potential for succeeding in this class. This is for the benefit of the students themselves (since we hope as far as possible that students would do well) and the benefit of their prospective team mates.
Our advice to the student posing the query would be to try his/her luck and apply. The submitted personal statement would hopefully contain more pertinent information and allow us to provide him/her with better advice on whether he/she should be taking the class.
6. I want to know if the course will be too hard for the first year student to take as it is a level 3000 module. Also, I don't have any programming background, can I take this course?
First, we are confident that this course will not be too hard for at least some first-year students. In particular, the first-year SoC students who obtain a minimum A-grade in CS1101XYZS should have no major difficulties with regards to the programming requirements for the new course. First-year SoC students who have trouble obtaining an A-grade for CS1101 may not yet have the necessary maturity to take this course and should perhaps wait till their second or third year to before they do so. That said, this course is not about programming alone. First-year students who do not have a strong programming background but who are brilliant artists or have extensive web design backgrounds are good candidates for the course. The litmus self test is the following: can I contribute to my prospective project team?
Students who have a strong desire to build something cool should just apply. One goal of the course is also to encourage students to pick up the Nike motto: (if you have a good idea) just do it. Some students might be a little uncertain about whether they want to take the course and would prefer to wait till their friends have taken it and hear their feedback before deciding. That's fine. Some people are just not in a hurry to be the first man on the Moon. Caution is sometimes good.
Note however that the Internet waits for no man. In a year's time, that great billion-dollar application that you're currently thinking about might have already been developed by some other student who takes the course in Jan 2008. Some things can wait; some cannot. Prospective students just need to decide for themselves where they stand.
7. I'm a 2nd year Electrical Engineering student interested in taking the above mentioned module. May I ask about the level of workload involved? I have not done any programming projects so I was just wondering roughly how many hours a week would such a project take up. My programming skills are so-so, got a B+ for both CS1101C and CS1102C.
How many hours a week would such a project take up? This is an excellent question that is incredibly difficult to answer.
Prima facie, the basic requirements for CS3216 are very light: 2 hours of class time a week, three assignments and a Final Project. It is probably possible to muddle through the class and spend no more than 5 or 6 hours a week on average, meet the basic requirements and pass with a C grade. No exams some more. :-)
However, students who don't have to time and interest to be able to dedicate at least 10 to 15 hours a week on this class probably should not take the module. This is to be fair to their prospective team mates. The grading of the class is dependent on the quality of the work produced, and this depends not only on how brilliant the students are, but also on how much effort they put into the projects.
Perhaps a more precise answer to this question is that "it depends, and it depends on a number of factors:"
- Familiarity with web-based applications. Taking the class involves learning how to write web-based applications and integrating with a database. Some students already know how to build basic web applications, i.e. SoC students who have taken CS2102. Students who don't already know will obviously have to spend more time than the students who know to pick up the required skills -- but this class is about learning, so if students want to learn, they obviously have to put in the time. Even for students who already know some php and SQL, there is still a lot to learn, so such students may also spend a significant amount of time picking up more advance programming techniques. AJAX for example, can be quite complicated.
- Team Dynamics. Most of the assignments in the class will be done in teams. Some teams are more efficient and effective than others. Some teams have members who waste a lot of time arguing over frivolous things and nothing gets done. Therefore, team dynamics also plays a huge part in determining how much time the class will take. Having a good team of really smart and hardworking team mates will reduce workload all round significantly and/or allow the team to accomplish a lot more. As explained above, students more or less get to choose who they work with, so there is not completely random. But that said, sometimes the team dynamics are not obvious until people actually start working together.
- Scope of Final Project. The Final Project is open-ended. Students can choose to build whatever they wish. Some teams may aim to build an application that is cute and useless, but capture lots of eyeballs; other teams may choose to build another Google. The amount of work that the Final Project requires is determined mainly by what the students decide to do.
In a nutshell, the workload for CS3216 is not expected to be significantly heavily than other 4-MC SoC modules. However, if someone is out to build the next Google in CS3216, anything goes (but he might also make his first billion in the process :-P). The workload depends a lot on the students and is not prescribed entirely by the class.
Addendum:For the first offering of CS3216 in AY2007/2008, the effective workload for the class turned out to be significantly higher than what had imagined when we designed the course. One major reason is that we were able to attract outstanding students who tended to produce apps that were of much higher standard that anticipated ad the process took up a lot more time than we had expected. The number of assignments for CS3216 will be reduced and the requirements of the assignments made simpler in future offerings.
8. Will this module be offered in future semesters?
The University does not introduce classes that is only offered for one semester. However, CS3216 will be likely only be offered during the second semester of each academic year and not every semester because it is quite a specialized module. That said, this is the initial offering of the course and we will need to do a review of the course before we make any conclusive statements about the future of the course.
And even if the course is to be offered in future semesters, Facebook may not always be the primary medium for this course. This year it will be Facebook; next year, it might be Google OpenSocial. The whole point of the course is to train our students to learn on-the-fly. CS3216 must also evolve with the times.
9. I signed the Acceptance Record Undertakings and Authorizations (ARUA) 'Rules relating to inventions, innovations and other works' at matriculation. It looks like the university claims ownership on stuff discovered / created on *research* or using uni resources and / or funding.
In particular, there is this paragraph: "In addition to the provision of educational facilities at tertiary levels, the functions and objectives of the University include the promotion of research and scholarship and the advancement and dissemination of knowledge for the benefit of all. Consistent with its status as a publicly funded organisation, it is critical that the University ensures that the creation, dissemination and commercialisation of Intellectual Property is properly administered for the benefit of the public and the University. These Rules shall therefore apply to all Intellectual Property developed or created by a University member, including students, in the course of University research. The Industry Liaison Office manages all such issues".
What are its implications on the applications developed in CS3216? Does the University own the application that we develop?
This question was referred to the Industry Liaison Office, and the following is the response: "If the resources for the development of the Facebook Application can be downloaded from Open source, then the ownership of such development will reside with the individual student." It seems safe to assume that students can sell the applications they develop and pocket the money (if they find a willing buyer :-P).
Module Registration
Places for AY2008/2009 Semester 2 will be limited and it will not be assigned through CORS bidding. Instead, interested students are to required to submit a personal statement and/or portfolio to bid for a place. Places will be allocated in a manner to ensure that there is the diversity of talent required to build good Facebook applications.
From our experience in the previous offering of CS3216, we have come up with the following rule of thumb in offering places for AY2008/2009. In general, places will be offered to three categories of students: (i) strong programmers (generally these are your high A's/A+'s in CS1101 and freelance web developers); (ii) designers (these are folks who have demonstrated aptitude for the visual arts/web design) and (ii) students with PASSION (can be from ANY faculty). Places are likely to be offered in the ratio of 60%:20%:20%.
To apply, interested students should submit a personal statement to cs3216-staff@googlegroups.com by 15 December 2008. The personal statement should address the following questions in the personal statement:
- Why do you want to take the module?
- Describe your background and explain how do you think you can contribute to the diversity and vibrancy of the module and to the team projects.
- EITHER (i) Describe a cool Facebook app that you *really* want to build. Explain why you think your app is really cool; OR (ii) Describe a business/project that you want to start. Explain how you think taking CS3216 will help you.
Students are welcome to throw in a resume or portfolio of sorts if they feel that it would be helpful in demonstrating that they have what it takes to succeed in this new course. Students who want to be considered for the class as designers should most definitely submit a portfolio of their artistic works as well. Students will be informed by 26 December 2008 if they are offered a place in the upcoming offering of the new course (and they will automatically be pre-registered for the module on CORS). Students can still change their mind and drop the class when the Semester starts (and the place allocation policy will have an allowance for this and there will be no wait-listing to keep life simple).
Applicants who have taken CS1101/CS1102 should state their obtained grades for these classes. An A-grade will not guarantee a place, though it would most certainly position the candidate favourably for one of the places reserved for the "programmers". Interested students should join the CS3216 Facebook Group. Information sessions will be held for the class and they will be announced through the Facebook group.
Note: If the number of students who wish to register for this course exceeds the number of places available, the School of Computing reserves the right to allocate the places according to our policy of promoting cross-faculty diversity. SoC students will get priority, but some places will be reserved for non-SoC students.