CMSC 21 - College of Arts and Sciences

UNIVERSITY OF THE PHILIPPINES MANILA
COLLEGE OF ARTS AND SCIENCES
DEPARTMENT OF PHYSICAL SCIENCES AND MATHEMATICS
MATHEMATICAL AND COMPUTING SCIENCES UNIT
Course Code: CMSC 21
Course Title: Fundamentals of Programming
Credit Units: 3
Lecture Unit(s): 2 units; 2 hrs./week
Course Description: Algorithmic analysis, data structures, algorithmic design
Laboratory Unit(s): 1 unit; 3hrs./week
Program/Student Outcomes
1.
2.
3.
4.
5.
Incorporate the latest developments in Computer Science and Information Technology in the design of software systems for various applications
Create innovative solutions through research and development projects in Computer Science
Exhibit moral, ethical and social responsibilities as a professional and as a Filipino citizen
Work collaboratively in teams
Communicate computing solutions effectively
Mapping of Course Outcomes vis-à-vis Program Outcomes
1. Develop several programs using an object-oriented programming language.
2. Evaluate algorithms.
3. Perform different operations using different data structures.
INTENDED LEARNING OUTCOMES
Perform mathematical proofs through
induction and contradiction
Determine the running time of algorithms
TOPICS
TEACHING-LEARNING
ACTIVITIES
Foundations:
-Mathematical proofs
-Pseudo-code Convention
Lecture/Class Discussion
Growth of functions:
-Asymptotic notations
Lecture/Class Discussion
Solving recurrences:
-Substitute method
-Recurrence tree
-Master Method
ASSESSMENT TASKS
REFERENCES
(Book: Chapter)
Oral recitation
Levitin: Ch1
Homework
Cormen: Ch1
Oral recitation
Kleinberg: Ch2
Quizzes
Levitin: Ch2
Cormen: Ch2
ConcepTest
2|P a g e | F U N D A M E N T A L S O F P R O G R A M M I N G
Design Programs using C++ language
Design programs utilizing elementary data
structures
Design programs utilizing trees and heaps
Programming using C++:
-Basics of C++
-Arrays and Pointers
-Strings
-Structures, Classes and Objects
-Files and Streams
Elementary Data Structures:
-Stacks
-Queues
-Linked Lists
Binary Search Trees (BST)
-Tree traversals
-Searching a BST
-Insertion and Deletion
Laboratory Works
Hands-on Exercises
Group Project
Computer Programming
Rubric**
Chua: Ch1, Ch2, Ch3, Ch4,
Ch5, Ch6
Malik: Ch2, Ch3, Ch8, Ch9,
Ch12
Lecture/Class Discussion
Oral recitation
Deitel: Ch2, Ch7, Ch8, Ch9,
Ch10, Ch11, Ch17
Chua: Ch8, Ch9, Ch10
Laboratory Works
Problem Set
Malik: Ch18, Ch19
Hands-on Exercises
Deitel: Ch20
Computer Programming
Rubric**
Kleinberg: Ch3
Lecture/Class Discussion
Board works
Cormen: Ch3
Deitel: Ch20
Laboratory Works
Written Exercises
Levitin: Ch6
Simulations
Hands-on Exercises
Cormen: Ch3
Red-Black Trees (RBT)
-Properties
-Rotation
-Insertion
-Deletion
Quizzes
Computer Programming
Rubric**
Heaps
-Building heaps
-Heap sort algorithm
Implement sorting using different algorithms
Sorting Algorithms
-Quick sort
-Merge sort
-Counting sort
-Radix sort
-Bucket sort
Lecture/Class Discussion
Written Exercises
Malik: Ch10
Game
Problem Set
Deitel: Ch19
Hands-on Exercises
Levitin: Ch3, Ch5, Ch7
Computer Programming
Rubric**
Cormen: Ch2
OBE SYLLABUS
3|P a g e | F U N D A M E N T A L S O F P R O G R A M M I N G
Apply dynamic programming on different
problems and in real-world scenarios
Dynamic Programming
Lecture/Class Discussion
Oral recitation
Chua: Ch7
Applications
-Assembly-line programming
-Matrix-chain multiplication
-Full parenthesization
-Longest common subsequence
Reporting
Written Exercises
Malik: Ch17
Journal Reading
Reporting
Deitel: Ch6
Paper
Kleinberg: Ch6
Recursion
Levitin: Ch8
Dasgupta: Ch6
Cormen: Ch4
Instructional Materials and References:
1.
2.
3.
4.
5.
6.
7.
Chua, Laboratory Modules in CMSC21 Fundamentals in Programming.
Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms, Third Edition, MIT Press, 2009.
D.S. Malik, Thomson, C++ Programming: From Problem Analysis to Program Design, Fifth Edition, Course Technology, 2007.
Deitel & Deitel, C++ How to Program, Prentice Hall, Eighth Edition, 2012.
Kleinberg, Tardos, Algorithm Design, Addison-Wesley, 2005.
Levitin, Introduction to the Design and Analysis of Algorithms, Third Edition, 2011.
Dasgupta, et al., Algorithms, McGraw Hill, 2008.
Grading System:
I. Lecture
a. Reporting, Exercises and Problem Set
b. Long Exams (3)
c. Final Exam
II.
Laboratory
a. Exercises
b. Machine Problem
c. Hands-on Exams (2)
[50%]
5%
30%
15%
[50%]
5%
20%
25%
OBE SYLLABUS
4|P a g e | F U N D A M E N T A L S O F P R O G R A M M I N G
OBE SYLLABUS
**Computer Science Programming Rubric
Traits
Specifications (50)
-Output/Results (25)
-Syntax/Runtime/Logic Errors (15)
-Test Cases (10)
Readability (15)
-Variable names (10)
-Indentations/white spaces (5)
Documentations (15)
Exceptional (1)
The program works and meets all of
the specifications.
Acceptable (0.75)
The program works with minor
errors.
Amateur (0.5)
The program works with some
major errors on some cases.
Unsatisfactory (0.25)
The program is producing incorrect
results.
The code is exceptionally well
organized and very easy to follow.
The code is fairly easy to read.
The code is poorly organized and
difficult to read.
The documentation is well written
and clearly explains what the code is
accomplishing and how.
Efficiency and Reusability(10)
The code is extremely efficient and
can be reused.
The documentation consists of
embedded comments that are
somewhat useful in understanding
the code.
The code is fairly efficient and most
of the codes can be reused.
The code is readable only by
someone who knows what it is
supposed to be doing.
The documentation consists of
embedded comments with simple
headers separating routines.
The code is brute force and some of
the codes can be reused.
Delivery (10)
The program was delivered on time.
The code is huge and appears to be
patched together and the code is
not organized for reusability.
The program was more than two
weeks overdue.
The program was delivered within
the week of the due date.
The program was delivered within
two weeks of the due date.
The documentation is simple
comments and does not help the
reader in understanding the codes.