• Home
  • About
  • Mobile
  • Open Content
  • Search

Module Overview


  • Description
  • Facilitators
  • Weblinks
  • Timetable
CS2104 

PROGRAMMING LANGUAGE CONCEPTS
   2012/2013, Semester 1
   School of Computing (Computer Science)
Modular Credits: 4
  Tags: --

Course Description

TopFrom the module description at http://www.comp.nus.edu.sg/undergraduates/Others/SoC-Module-desc.pdf

This module introduces the concepts that serve as a basis for hundreds of programming languages. It aims to provide a basic understanding and appreciation of the various essential programming-language constructs, programming paradigms, evaluation criteria and language implementation issues. The module covers concepts from imperative, object-oriented, functional, logic, constraints, and concurrent programming. These concepts are illustrated by examples from varieties of languages such as Pascal, C, Java, Smalltalk, Scheme, Haskell, Prolog. The module also  introduces various implementation issues, such as pseudo-code interpretation, static and dynamic semantics, abstract machine, type inferencing, etc.

Prerequisites:
  • Familiarity with a programming language
  • Basic knowledge of algorithms and data structures

Essential benefits at completion of module:
  • Ability to pick up new programming languages very quickly by self study.
  • Further your programming skills by understanding new programming paradigms and means of abstraction.
  • Understand the inner workings of compilers and interpreters.
  • Obtain a bird's eye view of major software development platforms currently in use: C/C++, Java, Python, LAMP, C#

 

Workload

TopLectures: 2h/week
Tutorial: 2h/week
Lab: 0h/week
Homework: 3h/week
Self-study: 3h/week
  • A pre-recorded lecture will be released 1 week prior to the corresponding live lecture. The live lecture (also recorded as a screencast and made available after-the-fact) is meant to reinforce the main concepts of the pre-recorded lecture via examples and detailed explanations. Going through the pre-recorded lecture before attending the live one is highly recommended.
     
  • Tutorials further reinforce concepts taught in the lectures via meaningful short exercises. Students are required to prepare in advance and participate with answers during tutorials. Working code will be developed as solution to each exercise by the entire class, in a collaborative manner, on a computer connected to a projector.
     
  • There will be 8 Problem Sets released as homework. Problem set exercises are somewhat more elaborate, and expand on the topics discussed in lectures and tutorials.
     
  • There is no compulsory bibliography. The best preparation for the final exam is solving all tutorial and homework exercises.

Schedule and Materials

TopAll scheduling of weekly lectures and tutorials, and the corresponding materials, shall be available via the "Lesson Plan" link.

All materials will be available in the course workbin, and will be mirrored at http://www.comp.nus.edu.sg/~razvan/cs2104.

Homework submission will be handled via the IVLE workbin.

Assessment

TopThree Layers of Skill and Knowledge

Each topic in this module will be annotated as either Basic [B], Core [C], or Advanced [A], roughly indicating the level of difficulty in comprehending the respective topic. This categorization is meant to help students plan their efforts in achieving their grade objective. This annotation scheme will also be applied to final exam questions, with the following guidelines:
  • Answering perfectly all  the questions marked as Basic [B], without answering any core or advanced questions will guarantee a grade of B-.
  • Answering perfectly all the questions marked as Basic [B] and Core [C], without answering any advanced questions, will guarantee a grade of A-.
  • Answering perfectly all questions will guarantee a grade of A+.
In general, students should make sure that they understand basic topics very well before progressing to the core ones, which should be a further stepping stone towards the understanding of advanced topics. In studying for the exam, the difficulty level information could be used as a guideliine on what to spend more time focussing on.
  • For instance, suppose your grade objective is B+. Then, you should feel free to skip some of the advanced topics, but focus more thoroughly on the basic and core ones.
  • Or, let's say that your grade objective is B-. Then, you should feel free to skip all advanced topics, and maybe some of the core ones, but focus thoroughly on the basic topics.

Assessment has two components: Effort and Knowledge.


Effort: 50%
  •    Homework: capped at 45%
  •    Tutorial participation: capped at 10%
  •    Forum participation: capped at 5%

This category of assessment rewards the effort spent in acquiring knowledge, giving slow learners a fair chance to attain a grade that is ultimately reflective of their knowledge. There will be 8 homework sets, each with several problems that students may attempt. The total weightage of all the problems will be 80 marks. However, the homework marks are capped at 45. Students may choose how many solutions they want to submit. While all marks shall be recorded, in the final calculation of the continual assessment, marks in excess of 45 shall be forfeited. Similarly, tutorial marks are capped at 10. A student may earn a recorded mark that is higher than 10, but in the final calculation of the continual assessment, all tutorial marks in excess of 10 shall be forfeited. Finally, we shall reward good forum participation. Posts that help clear doubts of fellow students regarding the material taught in class shall be rewarded depending on their quality. Again, all marks shall be recorded, but all marks in excess of 5 shall be forfeited. On top of all individual forfeitures, there is yet another general one, at 50%, for all the continual assessment items.

While students may want to strategize in picking the homework problems to solve, and the tutorial questions to present, in order to maximize their continual assessment marks, we would like to emphasize that each homework problem and each tutorial exercise has been chosen to illustrate a certain aspect of the material taught, and the ability to solve them is very likely to improve performance in the final exam. The capping scheme serves to allow students who get partial marks rather than full marks in their assessment to still have a chance at a good final grade, as long as they eventually acquire the knowledge and understanding expected of a student taking this module.

Contest: Since the more hardworking students are likely to have more marks forfeited, and all forfeited marks are still recorded, we shall have the following contest: " who has most marks forfeited wins!". In the last lecture, we shall publish the hierarchy of forfeited marks and the winner and the first 5 runner-ups will receive chocolate prizes!!!



Knowledge: 50%   (reward quality of knowledge acquired, rather than effort spent in acquiring it)
  • Final exam: 50% (26 NOV 2012 Evening)

The exam is open book. 


Collaboration on homework exercises

TopYou are allowed to solve your homework exercises in teams of at most 2 students. Each of the team members will earn 75% of the score awarded to their submitted solution.

Late submission policy

TopAll late submissions will incur a penalty of 1% of awarded marks for each hour or part thereof that has elapsed since the submission deadline, up to a maximum of 50 hours, after which no late submission will be accepted.

Example: if your solution deserves 5 marks, but you submitted 10 hours late, then your final marks for that submission will be 5*(1-10*0.01) = 4.5

Penalties will be computed automatically at the end of the semester, and will not be reflected in the individual homework scores reported back to students.

Software

TopIn this module, the following free software packages will be used.
  • Pentium assembly language
    • gas (from linux/cygwin binutils)
    • Windows alternative: install MinGW
  • C/C++
    • Install GCC in Linux/Cygwin
    • Windows alternative: install Visual Studio Express Edition
  • Java: all resources at: http://www.oracle.com/technetwork/java/index.html
  • C# : Install Visual Studio Express Edition: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-csharp-express
  • Scheme: racket-lang.org
  • Prolog/CLP (EcLiPsE Prolog): http://eclipseclp.org/
  • Ocaml: http://caml.inria.fr/
  • Haskell: haskell.org (install GHC)
  • Python : python.org (either 2.x or 3.x will do)
  • PHP: http://php.net (no need to install browser support)
  • SQL: either of the following:
    • MySQL: http://mysql.com/ (community edition)
    • PostgreSQL: http://postgresql.org/
  • Go (The Google Language): http://golang.org
  • Bash: Available in Linux/Cygwin
  • Autohotkey: http://www.autohotkey.com (Windows version only)
  • ImageMagick: http://www.imagemagick.org/script/index.php
These packages will be available in the lab computers. You are also expected to install them on your own machines.

Contact

  • IVLE Webmaster

Social Media

Latest Alerts

  • IVLE scheduled maintenance every Tuesday 0300 hrs - 0700 hrs

Centre for Instructional Technology

Legal  |  Acceptable Use Policy

Copyright © 2015, National University of Singapore. All rights reserved.