Skip to content

CS2030s Course Information and Policy

Note

This is reproduced from CS2030S Canvas Page.

Course Code Course Units Workload Preclusion
CS2030S 4 2-1-2-3-0-2 CS2030/CS2030DE

Description

This course is a follow up to CS1010. It explores two modern programming paradigms: object-oriented programming and functional programming. Through a series of integrated assignments, students will learn to develop medium-scale software programs in the order of thousands of lines of code and tens of classes using object-oriented design principles and advanced programming constructs available in the two paradigms. Topics include objects and classes, composition, association, inheritance, interface, polymorphism, abstract classes, dynamic binding, lambda expression, effect-free programming, first class functions, closures, continuations, monad, etc.

Learning Outcomes

  • attain proficiency in Java
  • be able to apply functional programming concepts to design and implement software, including:
    • implement basic algorithms in functions that are effect free
    • implement useful functions that take/return another function
    • write correct and effective code using lambda expressions and/or infinite streams
  • be confident in reading and developing medium-scale programs
  • be confident enough to learn new programming languages that uses OOP and FP paradigm
  • be equipped with solid programming foundations for further studies in computer science
  • be aware of how the OOP and FP concepts are implemented in different ways in different programming languages
  • be familiarize enough with common OO concepts to understand software code written in common OO language and understand documentation of software libraries in OO
  • be able to compare and contrast imperative programming, OO programming, and function programming paradigms, and select the most natural paradigms for each situation
  • be familiarize enough with common functional programming concepts and constructs, including lambda expression, effect-free programming, first class functions, infinite streams.
  • be able to apply OO concepts to design and implement medium to large scale programs, including:
    • design and implement a class
    • decompose a problem solution into classes and define members and methods for each class
    • use polymorphism effectively
    • use inheritance to design simple class hierarchies that allow code reuse
    • trace the control flow of a programs that use dynamic dispatch
    • use encapsulation mechanisms such as interfaces, private methods/members

Teaching Modes

Lectures

  • The weekly 2-hour lectures are typically where you learn about new concepts.
  • The lectures closely follow the course notes. Students are encouraged to read through the notes before the lectures.
  • The lectures will be recorded. Screencasts of the lectures will be posted online within 1 week after the lecture. This will be done on a "best-effort" basis. The screencast is not guaranteed to be available on time, or at all. Posting of the screencast is meant to help students who attended the lecture to recap the content or to help those who are not able to attend the lecture due to unexpected circumstances. It is not meant to be a replacement for lecture attendance. Students are encouraged to attend the lectures live so that they can interact and ask questions.
  • Lecture slides will be posted after the class. Note that slides are used as a visual aid during the lectures. It is not meant as a summary of lectures nor a replacement for lecture notes.
  • We do not take attendance for the lectures. You do not need to inform anyone if you cannot attend a CS2030S lecture.

Recitations

  • The weekly 1-hour recitation sessions (starting Week 3) allow students to interact with the teaching staff in smaller groups and discuss the problem sets.
  • Attendance will be taken. Students who cannot attend a recitation session should inform their corresponding tutor.
  • Students are expected to attend their assigned recitation session. If there is a strong need to attend another session for a specific week, the student must inform the corresponding tutors.
    • This is allowed on an "exceptional" basis. Student should not attend a different session every week.

Labs

  • The weekly 2-hour lab sessions (starting Week 3) allow students to participate in hands-on learning activities.
  • Activity varies and includes an in-class timed lab exercise every 1-2 weeks (i.e., lab exercise), discussion of the programming exercises, and exploration of the thought process as well as potential different solutions.
    • As we have several sessions, the questions for lab exercise may be different between sessions.
    • The questions for lab exercise each session will be randomized using a fair random number generator.
    • Do not discuss questions with other students on the day of the quiz. You may discuss starting from the day after.
  • The lab sessions are usually where most of the learning happens.
  • Attendance will be taken. Students who cannot attend a lab session should inform their corresponding tutor.
  • Students are expected to attend their assigned lab session. If there is a strong need to attend another session for a specific week, the student must inform the corresponding tutor.
    • This is allowed on an "exceptional" basis. Student should not attend a different session every week.

Catch-Up Sessions

  • Approximately every three weeks, we run a 1-2 hours Q&A sessions for students to clarify doubts on Saturday morning.
  • Attendance is optional, but we strongly encourage students who are falling behind to take this opportunity to clarify doubts and catch up.
  • Catch-up sessions will be recorded on a "best-effort" basis. The video will be shared within 1 week after the session. There is no guarantee that the video will be available immediately.

Assessments

Types of Assessments

There are two types of assessments: formative and summative assessments.

Formative assessments include problem sets, programming exercise, past year questions, online quizzes, and lab exercises. They carry little to no marks and are meant to help students self-diagnose their learning to improve their software development skills and enhance their understanding of the concepts taught in class. They are also meant to make students think deeper about the lessons, apply what they learn, and gain experience and confidence in their ability to develop complex software. Despite the smaller weightage, we expect that students spend most of their time on formative assessments.

The summative assessments, on the other hand, are meant to evaluate student learning. These include three two written assessments (Test 1, Test 2 [previously called midterm] midterm and the final exam) as well as two practical exams. These are high-stakes assessments carrying 90% of the total weights.

The types of assessments include:

  • Problem Sets: After every lecture (starting Week 3), we will provide some problems to make students reflect and practice applying what they have learned. These questions are not graded. There is no need to submit answers for grading. They will be discussed and presented during the recitation sessions. Some questions are marked as "Homework" intended as an introduction to the topic of the following week.
  • Past Year Test Papers: Past year test papers are made available for practice. These are not graded. There is no need to submit answers for grading. Selected questions may be discussed during class. They can be discussed on Ed.
  • Quizzes: The online quizzes are released every week after the lecture (i.e., Monday, 2 PM) and are due one day after lecture (Tuesday, 11:59 PM). The quizzes are more tightly coupled to the content of the weekly lectures and are meant to help students self-diagnose their understanding of what is taught for that week.
    • You may attempt the quizzes an unlimited number of times. We will consider only your highest score.
    • We will release a "Practice" version on Wednesday for revision.
  • Programming Exercises: These are programming questions of various difficulty levels that are critical for students to solve, to gain experience, skills, and confidence in applying CS2030S concepts to programming. Typically students spend more than half of their time in CS2030S on solving these programming exercises. Students should submit them on time to get feedback from their lab tutors.
  • Lab Exercises: These are "mini" practical assessments. Questions follow closely with the topic of the current week and the previous week. These are used to ensure that students continuous practice and are prepared for practical exams.
    • Lab exercises are done every 1-2 weeks during lab session. They are timed and has to be finished within 45 minutes during the lab session.
  • Practical Exams: Students will be given programming questions to solve within a limited time frame (typically 1-2 hours), in an examination setting in SoC computer labs. This is usually held in the evening or on a Saturday.
  • Test 1, Midterm and Final Exams are written tests (on pen and paper) conducted in exam halls.

All summative assessments (i.e., practical exams and written exams) are closed book assessments.

Assessment Weightage

Component %% Dates Notes
Self Diagnostic Quizzes 5% Weekly 0.5% per quiz ; 12 quizzes ; 15 questions per quiz ; we drop the bottom 2 quizzes from the mark
Lab Exercises 5% Every 1-2 Weeks during lab session and timed ; 1% per exercise ; 7 exercises ; 2 tasks per exercise ; we drop the bottom 2 exercises from the mark
Practical Exam 1 15% 11/10/2025 (tentative) on a Saturday ; in-person and timed (1 hour 30 minutes)
Practical Exam 2 25% 08/11/2025 (tentative) on a Saturday ; in-person and timed (2 hours)
Midterm 20% 29/09/2025 (tentative) during lecture period ; written assessment ; in-person and timed (1 hour)
Final Exam 30% 26/11/2025 arranged by Office of University Registrar (OUR) ; please follow their instruction

Marking and Review

Mistakes in grading may occur and we try to minimize this issue as follows.

  • We will provide a review of grading for summative assessments (e.g., tests, practicals, and finals) after the grade for each assessment has been released. We will use Canvas survey to request for regrading.
  • We will provide a review of marks capture at the end of Week 13. We will use Canvas survey to request for review. At this point, no regrading will be made. Please check that the marks are correctly captured on Canvas. Please check the following:
    • Marks from Softmark have been correctly imported for Midterm (we will have a separate review for Final exam).
    • Makeup assessments have been marked.
    • Marks from regrading requests have been correctly included.
    • Marks for Self Diagnostic Quizzes are correctly computed as follows.
      • Drop the marks for the bottom 2 of quizzes (i.e., exclude the lowest 2 marks).
      • Sum all the marks. In terms of "Points" as each quiz is up to 15 points, the total mark should not exceed 150 points.
      • Adjust the marks to 5% (i.e., 150 / 150 * 5). The marks will be rounded up to the nearest 0.5.
    • Marks for Lab Exercises are correctly computed as follows.
      • Drop the marks for the bottom 2 of exercises (i.e., exclude the lowest 2 marks).
      • Sum all the marks. In terms of "Points" as each exercise is up to 1 points, the total mark should not exceed 5 points.
      • The marks will be an integer.

Discussions and Tools

AI Tools

  • Access to AI tools is restricted during the summative assessments (practical exams and written exams)
  • Students may use AI tools to assist them to complete their formative assessments (quizzes, problem sets, and programming exercises). The use of AI tools, however, should be moderated and used to help students achieve the learning outcomes of CS2030S. It is pointless to use AI tools to generate answers to formative assessments.
  • Students should familiarise themselves with the NUS policy on the use of AI tools and the guidelines for using AI tools for academic work.

Discussions

  • We highly encourage discussions among students for programming exercises, but each student should be responsible for writing his/her code.
  • There is no marks for programming exercises.
    • Feedback from TAs will be given only for programming exercises submitted strictly before the deadline.
    • For the feedback to be useful for practical exam, you should submit your own attempt (after discussion).

Absence/Missed Assessment

In short, there is no late submission accepted for any assessments. However, we have a way to mitigate the impact for formative assessments.

Late/Missed Submission Policy

  • No late submission will be considered for quizzes. Note that we will drop the lowest two quizzes from the calculation. - We will re-publish the quizzes for revision that allows for unlimited try and with some comments for common mistakes. Hence, no late submission will be considered.
  • No late submission will be considered for lab exercises. Note that we will drop the lowest two exercises from the calculation.
    • Lab exercises can only be done during your respective lab sessions. Connections can only be made from within the lab. Your accounts will only be active during your session.
    • Attendance will be taken. You are not allowed to go to a different session on this week.
  • No late submission will be considered for programming exercises.
    • Since programming exercises are only used to give feedback of your attempt, no feedback will be given for submissions that are strictly after the deadline.
    • Tutors are not obligated to provide feedback on code that are submitted late.

Absence from Tests and Practicals

  • Students who are absent during a practical exam or the test must inform the teaching team (by submitting a documentation with a justification for missing the exam) by end of the day (i.e., by 17:00) of the day of the exam.
    • We will use Canvas surveys as a centralized submission for the documentation.
    • Only medical, academic, and compassionate reasons can be considered (e.g., representing NUS for a sports event is OK; Clashes with another course activity is OK; Attending a concert is not).
      • Clash with another course is a valid excuse for Saturday assessment.  It is not accepted for Test 2 during lecture as there should not be another activity registered during lecture time.
    • Documented proofs (e.g., medical certificates, email from the other course instructor) are required.
  • Being absent without justification during a practical exam or the test will result in 0 marks for the corresponding assessment.
  • An alternative assessment will be arranged for students who are absent during the test or practical exams with valid justification.
  • We are not obligated to provide additional alternative assessment if you are to miss both the assessment and the alternative assessment even if you have valid reasons. If you have valid reasons to miss both assessment and the alternative assessments, please contact UG office for special considerations.

Absence from Final Exam

The final exam is administered by the School and the Registrar's Office and thus followed a separate procedure. Students who are absent from the final exam should apply for special consideration. Details can be found at the NUS Student Portal (look under Special Consideration).

Grading

  • CS2030S is not graded using a bell curve. However, it is also not purely absolute grading. There is no known cutoff for each grade.
  • We aim to ensure fairness and correctness in assessments and grading.
    • We will normally open a regrading request to ensure correctness in grading.
    • Makeup assessment will be in a similar format with similar difficulty.
    • Assessment with different versions will be randomized using a fair random number generator.
  • A student will receive the grade he or she deserves, irrespective of how the other students in the class perform.
  • The number of As and Fs will not be artificially capped. Comparison of difficulties with different semesters may also be made.
  • As such, students should work together and help each other learn, instead of competing with each other for a limited number of As.
    • The help should be restricted to only about learning.  You should not give answers to any current assessments as it constitutes academic offense.
    • If you are not sure if it constitutes an academic offense, consult your instructor. Pleading ignorance is not a valid defense for academic offense.

Communication

The Teaching Team

You can reach the team at cs2030s@comp.nus.edu.sg.

The team is responsible for facilitating your learning in CS2030S. Their responsibilities include:

  • Planning and delivering the lessons during lectures, recitations, and labs;
  • Facilitating hands-on practices and discussions during recitations and labs;
  • Clarifying any doubts from students during class or offline via Ed;
  • Setting the assessment questions and practice exercises;
  • Providing feedback on submitted assessments and exercises;
  • Planning and running the practical exams, midterm;

Please note that the following are not handled by the CS2030S teaching team. We can help to forward your requests to the relevant office but often it is faster if you contact them directly:

  • Allocation of labs and recitations (This is handled by the SoC UG office, through CourseReg);
  • Management of programming environments, including the PE hosts, VPN, and computer labs (This is handled by the SoC IT Unit. You can contact them here);
  • Planning and running the final examination (This is handled centrally with all other exams by the NUS Registrar Office. You can contact them via examinations@nus.edu.sg);

Policy

  • Ed is the preferred platform for discussing the academic content of CS2030S between students and the teaching team.
    • Please use the appropriate tag. We may miss your question if you do not use the appropriate tag.
    • Please follow the appropriate template to facilitate accessing all the relevant information about the question.
    • Please check that your question has not been asked.
  • If you must use email, please send it to the email address cs2030s@comp.nus.edu.sg. This is a large course managed by a team. Doing so would ensure that your email receives the right attention and is handled by the right member of the team. Emailing individual instructors may cause a delay in response (if the email is not lost).
  • Only email a specific individual instructor or message the instructor using Canvas if you have matters that are personal and private.
  • If you must email, please prefix your email subject with [CS2030S] (including the square bracket). We teach multiple courses in one semester. Prefixing with the proper course code allows us to better handle our emails.
  • Use only your official NUS email for communication with the teaching staff -- either the one with @u.nus.edu or @comp.nus.edu.sg.
  • If you email us your question, and we feel that your question and the answer are useful to the rest of the class, we will publish it on Ed, with proper anonymization.

Asking Questions and Getting Help

CS2030S is not an easy course. Students are encouraged to ask questions if they don't understand something or if they are stuck solving a formative assessment question. Students are encouraged to ask questions during lectures, recitations, and lab sessions. Outside of these lessons, there are several ways to do so.

  • Ed:
    • The best place to get help is on Ed. If you have a question, please first check if someone has already asked the same question and if there is an answer.
    • Students are expected to monitor Ed regularly and learn from the interaction happening there. Often, students asked good questions that can bring new insights to understanding the course materials.
    • If your question has not been answered, you can post a question yourself. Please follow the general etiquette and guidelines of asking questions on Ed if you do so.
  • Office Hours:
    • Course instructors and recitation instructors have set aside a weekly office hour to meet and answer questions from students, face-to-face. Students are encouraged to meet with their recitation/lab instructors during this hour to clarify doubts and ask for help.
    • Outside of this fixed hour, students can arrange for an appointment to meet with the recitation instructors.
    • You are always welcomed to come to my (Adi) office at COM2-02-55 for consultation (and coffee). I instituted an open-door policy.
  • Messaging:
    • Many lab tutors made themselves available on messaging platforms to answer questions from their students.
    • Note that lab tutors are not obligated to be available 24/7 to answer questions through messaging. Each lab tutor is free to set their own policy on when they are available to answer questions via their choice of messaging platforms.
    • We encourage all Q&A to be done through Ed so that all students can benefit from the questions and answers, instead of these messaging platforms, which only benefit a subset of students.

Expectations

Commitment

To maximize the gain out of CS2030S, students should commit to

  • reading through the announcements, emails, and Ed posts, to keep themselves up to date with the latest course activities and discussions in CS2030S;
  • following instructions and respecting stipulated deadlines on administrative matters;
  • reading the provided lecture notes, attending classes, and actively seeking clarification when doubts arise;
  • making a best effort attempt at solving the quizzes, problem sets, lab exercises, and past year questions; not copying solutions from friends, AI, or other online sources;
  • striving to understand the thought process and the principle behind the solutions/sample code (from the teaching team or otherwise) after they are released;
  • helping each other learn (through discussion and teaching each other) to better understand the course materials and to solve the assessment questions, without providing solutions verbatim for others to copy;
  • actively participating in lab and recitation lessons, by asking questions, sharing attempts, and commenting on each others' attempts;
  • actively asking for guidance and feedback, when feeling lost with what is taught or falling behind.

Mental Health and Wellness

  • Adjusting to new ways of learning and a new environment at NUS can be challenging, and it may be especially more so for students from diverse backgrounds and circumstances.
  • If you feel stressed, anxious, depressed, overwhelmed, or just need someone to talk to, you may reach out to the SoC Student Support Manager from the Student Life Office or the NUS University Counselling Services
  • You may also approach the CS2030S Teaching Team, who can work with these services to support and accommodate students who need help (e.g., with alternative deadlines).
  • Consider this - As you embark on your university journey with SoC, it's crucial to remember that your goals extend beyond just scoring high grades. While studying is important, equally vital are opportunities for personal growth, forming meaningful connections, enjoying life, and preparing for your future career. It is essential to maintain a healthy balance between academics and mental well-being, recognizing that a few marks should never jeopardize your overall health and well-being.

List of Topics

  • Introduction to fundamental programming concepts (programs, compilers, variables, types)
  • Object-oriented programming principles: abstraction, encapsulation, inheritance, and polymorphism.
  • Variance of types, type safety, type inference, generic types
  • Functional paradigms: functions as first-class objects, side-effect-free programming, lazy evaluation, infinite list, monads
  • Non-sequential programming: parallel, concurrent, and asynchronous programming