You are on page 1of 6

CSE 1243 Programming Paradigms

Module Specification Sheet


Welcome Statement
Dear Student, I would like to welcome you on board for an adventure in the fascinating world of programming and programming paradigms. This semester, we will be working together for the module Programming Paradigms (CSE 1243), a core module in your curriculum. As first year students and future IT professionals, this module will teach you basic concepts and techniques of different programming paradigms through practical examples and programming exercises.

I sincerely wish you success and great work in all the modules you are currently taking.

While most people are dreaming of success, winners wake up and work hard to achieve it. Unfortunately, the only thing that comes to us without effort is old age. Success is simple. Do whats right, the right way, at the right time. Arnold Glascow

Now, its time to get to work. Always remember, hard work is the key to success!!!

I want to make this module as enjoyable as possible. Please feel free to ask questions and make suggestions at any time.

Good luck and enjoy the course.

Anuja Meetoo-Appavoo January 2012

Module Details
Module Code: Module Title: Credits: Course: Level: Semester: Lecture: CSE 1243 Programming Paradigms 3 BSc(Hons) Computer Science 1 2 2 Hours/Week Monday 10:30 12:30 Room 3.2A, Engg. Tower Practical: 2 Hours/Week Monday 12:30 14:30 CITS ETB Lab, Engg. Tower Tuesday 08:30 10:30 CITS Ex-Common Lab

Module Aim
The goal of the course is to introduce students to the different programming paradigms and give them knowledge of basic concepts and techniques of these paradigms, through practical examples and programming exercises. Rather than discuss the ideas of each paradigms abstractly, we will experience them through programming. The goal is not to make the student an expert programmer in any of the languages. Each language has far too many advanced features and nuances to be learned in a few lectures. However, students should be equipped from this introduction to extend their expertise in each paradigm. Language syntax and semantics, type systems and stages in the compiling process will also be covered.

Module Objectives
After successfully completing this module, students should obtain the following competencies: Show an understanding of syntax and semantics of programming languages and type systems. Demonstrate an understanding of stages involved in the compiling process. Show an understanding and appreciation of the principles and practices of the main paradigms for programming.

Ability to judge the strengths and weaknesses for each paradigm in relation to concrete tasks. Ability to develop moderately complex programs in each of the programming paradigms studied.

Have a deeper and more sophisticated understanding of programming. Easily and quickly learn and develop programs using new programming languages.

The exam will evaluate to what extent a student has these competences.

Outline Syllabus
CSE 1243(1)-PROGRAMMING PARADIGMS (L/P-3) (PQ: CSE 1103) Syntax and Semantics of Programming Languages, Type Systems, Programming Constructs, Evolution of Programming Languages, and Different types of Programming Languages including Imperative Programming, Object-Oriented Programming, Functional Programming, Declarative Programming and Scripting.

Note: A student will be allowed to follow module y of which module x is a pre-requirement (PQ) provided s/he has followed module x and sat for the examinations in module x unless decided otherwise by the Faculty/ Centre/ Cluster Board and Senate.

However, students are expected to know a reasonable amount of programming in at least Python and be comfortable with basic concepts like decision structures, loops and functions. Students should be able to write well-structured and easy-to-understand code, and understand the value that comes with good variable names, functions and comments.

Assessment Overview
Written Examination Paper Duration: Weighting (%): Continuous Assessment Class Test(s): Lab Test(s): Total: 20% 10% 30% 2 Hours 70%

Tentative Weekly Plan


Wk 1. 2. 3. Lecture Introduction to programming paradigms Syntax of Programming Languages Practical Imperative Programming in Python (Revision) Imperative Programming in Python (Revision)

Syntax and Semantics of Programming Imperative Programming in Python (Revision) Languages

4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

Types and Type Systems Object-Oriented Programming Object-Oriented Programming (Cont.) Object-Oriented Programming (Cont.) Class Test Functional Programming Functional Programming (Cont.) Functional Programming (Cont.) Logic Programming Logic Programming (Cont.) Logic Programming (Cont.) Revision

Python Programming (Recursion) Python Programming (Classes and Objects) Python Programming (Classes and Objects Cont.) Python Programming (Classes and Objects Cont.) No Lab Scheme Programming Scheme Programming (Cont.) Scheme Programming (Cont.) Prolog Programming Prolog Programming (Cont.) Prolog Programming (Cont.) Revision

Resources
Lecture Notes and Labsheets All lecture notes, labsheets and useful resources will be available on a Google site at https://sites.google.com/a/uom.ac.mu/paradigms/.

Reference Books Programming Languages: Principles and Paradigms By Allen Tucker and Robert Noonan Concepts of Programming Languages By Robert Sebesta

Contact Details
Lecturer Name: Department: Faculty: Room No.: Building: Phone No.: Email Address: Anuja Meetoo-Appavoo Computer Science and Engineering Department Faculty of Engineering 2.17 Phase II Engineering Building 403 7749 anuja.meetoo@uom.ac.mu

Consultation Time: Tuesday 13:30 14:30

Style of Teaching
1. Students are expected to come prepared to lectures and labs

2. Students are expected to regularly do their homework and do their reading assignments. 3. Questions pertaining to previous lectures will be asked during lectures. 4. Students are expected to find resources and questions about topics being covered in lectures from reference books or the Internet and work them out. They should not limit themselves to only what is covered in class. 5. Every week, students will be given a labsheet to work out during their lab session. They are expected to complete the questions at home if they have not been able to do so during their lab sessions. 6. There will be NO make-up tests for absentees. If you have a conflict for any of the tests, contact me at least a week prior to the test such that your situation can be evaluated and a possible solution found. However, note that only serious conflicts and only medical reasons supported by a certificate from a healthcare institution will be considered.

Code of Conduct
1. Students are expected to be punctual and disciplined in class.

2. The use of mobile phones is not allowed in class. Students are required to switch off their mobile phone or put it on silent mode prior to entering the class. 3. Students are expected to participate actively in class. Those who regularly participate in class may be entitled bonus marks. 4. Students who miss classes should find out from their classmates about the lectures and any important announcement.

5. Plagiarism and cheating will not be tolerated. It will be dealt with according to the policies of the University of Mauritius regarding academic dishonesty. Please read these policies at http://www.uom.ac.mu/html/regulations.htm You should NOT 'borrow' or 'lend' programs from and to your friends as this may lead to failing grades to both the lender and borrower. Its far more honourable to fail than to cheat. Abraham Lincoln

Tips for Success


1. Read the text book sections to be covered in lecture BEFORE it is covered. You'll get more out of the lecture. Also, make additional notes for items mentioned in lecture that you feel may help in your understanding of the material. 2. Concepts may seem familiar and you may understand them when they are explained in lecture or in the text book, but that does not mean you know that material. True knowledge (or possession of that knowledge) means you can apply those concepts to create programs which use them. 3. Start early on homework and revision. 4. Solve each homework problem and lab question completely. Remember this is your opportunity to teach yourself the material for that week. Copying solutions from someone else really does harm you because it means you are being robbed of the chance to learn that material (plus it could lead to a failing grade for cheating). 5. Do not limit yourself to only what is covered in class. Look for practical questions about topics being covered in lectures from reference books or the Internet and try them out. 6. If you do not understand something, consult your text book, browse the Internet or discuss with your class mates. If it is still not clear, consult your lecturer during scheduled office hours, lab sessions or via email. But, make sure you do not just brush it aside. Learn each concept as it is presented because the next week, you will be expected to learn more concepts that build on those from the previous weeks. 7. Make friends in your class to form a study group to help challenge and encourage one another to excel in this course. Be careful not to work too closely together on homework assignments which may cross the line to be considered as cheating. 8. Keep in mind that learning starts from the first day of classes not the following week. You may not have time to catch up, so be proactive and not reactive. This will reduce stress and anxiety. 9. Remember you only get one shot at your CPA and it sticks with you for life!!!

Copyright Anuja Meetoo-Appavoo, January 2012