CSPC 104 – Algorithms and Complexity
2nd Semester, School Year 2020-2021
Part I
Program Outcomes Upon graduation, successful BSCS graduates will attain the following program
outcomes:
1. Apply knowledge of computing fundamentals, knowledge of a computing
specialization, and mathematics, science and domain knowledge appropriate
for the computing specialization to the abstraction and conceptualization of
computing models from defined problems and requirements
2. Identify, analyze, formulate, research literature, define, and solve complex
computing problems and requirements reaching substantiated conclusions and
needed to design an appropriate solution using fundamental principles of
mathematics, computing sciences, and relevant domain disciplines.
3. Apply mathematical foundations, algorithmic principles and computer
science theory in the modeling and design of computer-based systems in a
way that demonstrates comprehension of the tradeoffs involved in design
choices.
4. Knowledge and understanding of information security issues in relation to the
design, development and use of information systems.
5. Design, develop, and evaluate solutions for complex computing problems,
and design and evaluate systems, components, or processes that meet
specified needs with appropriate consideration for public health and safety,
cultural, societal, and environmental considerations.
6. Create, select, adapt and apply appropriate techniques, resources and modern
computing tools to complex computing activities, with an understanding of
the limitations to accomplish a common goal.
7. Function effectively as individual and member or leader in diverse teams and
in multidisciplinary and multi-cultural settings.
8. Communicate effectively using both English and Filipino with the computing
community and with society at large about complex computing activities by
being able to comprehend and write effective reports, design documentation
and make effective presentations, and give and understand clear instructions.
9. An ability to recognize the legal, social, ethical and professional
responsibilities involved in the utilization of computer technology and be
guided by the adoption of appropriate professional, ethical and legal
practices.
10. Recognize the need, and have the ability, to engage in independent learning
and for continual development as a computing professional.
11. Participate in the generation of new knowledge or in research and
development projects aligned to local and national development agenda or
goals.
Course Credit 3 units
Course Description This course aims to acquaint students with the notion of algorithms and complexity,
to present generalized techniques for the design and analysis of algorithms for
problems that are useful in practice, to argue about the correctness of algorithms, and
to become acquainted with the notion of computational classes.
Contact 3 hours
Hours/Week
Course CSCC 104 Data Structures and Algorithms
Prerequisite/s
Course Outcomes At the end of the course, students should be able to: 1) use big O notation formally to
give asymptotic upper bounds on time and space complexity of algorithms; 2) choose
and apply the most appropriate algorithm design technique (divide and conquer,
backtracking, greedy, dynamic programming) for solving problems; 3) describe the
behaviour and running time of various searching, sorting and graph algorithms.
Course ● Lecture Activities, Assignments
Requirements
● Quizzes
● Laboratory Work
● Midterm and final examinations
Grading System Class Standing = 60%
Lecture Activities, Assignments
Quizzes
Laboratory Work
Midterm/Final Exam = 40%
Part II
Course Outline and Timeframe
Time Frame Course Content/Subject Matter
Week 1 The Role of algorithms in computing
Introduction to Algorithmic complexity
Week 2-3 Asymptotic analysis of upper and expected complexity bounds
Big-O notation: formal definition and use
Algorithms with various time and space complexity such as constant, logarithmic,
linear, quadratic, and exponential
Week 4-5 Analysis of iterative and recursive algorithms
Recurrence relations
Weeks 6-8 Brute-force algorithms
Greedy Algorithms
Divide and Conquer
Recursive Backtracking
Dynamic Programming Algorithms
Week 9 MIDTERM EXAMINATION
Week 10-13 Searching Algorithms
Sorting Algorithms
Week 14-17 String Processing
Graph Algorithms
Week 18 FINAL EXAMINATION
References:
Books:
Arora, A. (2017). Analysis and Design of Algorithms, Second Edition. Cognella
Academic Publishing.
Benoit, A., Robert, Y., Vivien, F. (2014). A Guide to Algorithm Design: Paradigms,
Methods, and Complexity Analysis. CRC Press.
Bhasin, H. (2015). Algorithms Design and Analysis. Oxford University Press, New
Delhi, India.
Cormen, T., Leiserson, C., Rivest, R., Stein, C. (2009). Introduction to Algorithms,
Third Edition. The MIT Press.
Knebl, H. (2020). Algorithms and Data Structures: Foundations and Probabilistic
Methods for Design and Analysis. Springer International Publishing.
Levitin, A. (2012). Introduction to the Design and Analysis of Algorithms, Third
Edition. Pearson Education, Inc.
Sen, S. & Kumar, A. (2019). Design and Analysis of Algorithms: A Contemporary
Perspective. Cambridge University Press.
Singhal, S. and Garg, N. (2018). Analysis and Design of Algorithms: A Beginner's
Hope. BPB Publications.
Vermani, L. & Vermani, S. (2019). An Elementary Approach to Design and Analysis
of Algorithms. World Scientific Publishing Europe Ltd.