Principles Of Computer Science 22020
Second Year / First Semester Course L-2 - 1049261
(A. A. 2020/2021)
Syllabus
The course aim to introduce computational thinking and the algorithmic approach to solving problems correctly and efficiently. Algorithms are ubiquitous in bioinformatics and are often at the interface of computer science and biology. Well established algorithmic techniques will be studied as well as ways to encode them in a computer program using python.
We will introduce the algorithmic approach and the theory of algorithms for studying correctness and efficiency, understanding what makes a good algorithm and how to classify them.
We will study characteristic algorithmic techniques and the relate-d computational ideas that are relevant to the field of biology and how to select the most suitable to solve a given task. Topics covered include
- Searching algorithms
- Divide-and-Conquer algorithms
- Clustering and Tree-based algorithms
We will work with Python and how to write a computer program encoding a given algorithm. We will work with Amazon's AWS and how to use cloud resources to efficiently execute our python programs on large datasets.
Location
All classes take place in Classroom Psicologia I, Fisiologia Generale e Antropologia Farmacia e Medicina (CU026, E01PSIL101)
- Remote participation is available through zoom.
Detailed information on in-person and on-line attendance are available from the following Sapienza Webpage on Covid-19, phase 3.
- Students in-person attendance booking system (ProDigit)
- Tools for off-campus and online teaching (https://www.uniroma1.it/en/pagina/easy-tools-campus-and-online-teaching)
- Access procedures for students, staff and guests (https://www.uniroma1.it/en/notizia/covid-19-phase-2-procedures-students-staff-and-guests)
Time Schedule
- Monday 14:00 - 16:00
- Thursday 14:00 - 16:00
Contact & Discussions
A slack channel is available at the following URL: https://pcs2020-workspace.slack.com
ASSIGNMENTS
A total of five assignments will be handed over. These assignments are done by each student individually. Clearly you should discuss with other students of the course about the assignments. However, you must understand well your solutions and the final writeup must be yours and written in isolation. In addition, even though you may discuss about how you could implement an algorithm, what type of libraries to use, and so on, the final code must be yours. You may also consult the internet for information, as long as it does not reveal the solution. If a question asks you to design and implement an algorithm for a problem, it's fine if you find information about how to resolve a problem with character encoding, for example, but it is not fine if you search for the code or the algorithm for the problem you are being asked. For the projects, you can talk with other students of the course about questions on the programming language, libraries, some API issue, and so on, but both the solutions and the programming must be yours. If we find out that you have violated the policy and you have copied in any way you will automatically fail. If you have any doubts about whether something is allowed or not, ask the instructor.
- 1st Assignment
Deadline: 16th October 2020
- 2nd Assignment
Deadline: 30th October 2020
- 3nd Assignment
Deadline: 13th November 2020
- 4th Assignment
Deadline: 4th December 2020
- 5th Assignment
Deadline: 8th January 2021
Lecture Material
- Lecture 1: Monday, October 5, 2020. Lecture Slides in PDF
- Introduction to Computational Thinking
- First Assignment
- Lecture 2: Thursday, October 8, 2020. Lecture Slides in PDF
- Lecture 3: Monday, October 12, 2020. Lecture Slides in PDF
- The Art of Computer Programming by Donald Knuth
- Dynamic Programming
- Nim a mathematical game of strategy
- Lecture 4: Thursday, October 15, 2020. Lecture Slides in PDF
- Python Datastructures
- Python Basic and Composite Data types
- Google for Education: Python lists
- Python Programming: An Introduction to Computer Science (Third Edition) by John M. Zelle
- Chapter 11 Data Collections
- Sample Programs
- Lambda Expressions in Python
- Selection Sort Algorithm
- Lecture 5: Monday, October 19, 2020. Lecture Slides in PDF
- Lecture 6: Thursday, October 22, 2020. Lecture Slides in PDF
- Recursive Functions
- Python Programming: An Introduction to Computer Science (Third Edition) by John M. Zelle
- Chapter 13 Algorithm Design & Recursion
- Sample Programs
- Lecture 7: Monday, October 26, 2020. Lecture Slides in PDF
- Lecture 8: Thursday, October 29, 2020. Lecture Slides in PDF
- Lecture 9: Monday, November 2, 2020. Lecture Slides in PDF
- Lecture 10: Thursday, November 5, 2020. Lecture Slides in PDF
- Lecture 11: Monday, November 9, 2020. Lecture Slides in PDF
- Lecture 12: Thursday, November 12, 2020. Lecture Slides in PDF
- Lecture 13: Monday November 16, 2020. Lecture Slides in PDF
- Lecture 14: Thursday, November 19, 2020.
- Python Programming: An Introduction to Computer Science (Third Edition) by John M. Zelle
- Chapter 12 Object Oriented Design
- Sample Programs
- Python Programming: An Introduction to Computer Science (Third Edition) by John M. Zelle
- Lecture 15: Monday, November 23, 2020. Lecture Slides in PDF
- Lecture 16: Thursday, November 26, 2020.
- Lecture 17: Monday, November 30, 2020. Lecture Slides in PDF
- Lecture 18: Thursday, December 3, 2020. Lecture Slides in PDF
- Lecture 19: Monday, December 7, 2020. Lecture Slides in PDF
- Lecture 20: Thursday, December 10, 2020.
- Lecture 21: Monday, December 14, 2020.
- Lecture 22: Thursday, December 14, 2020.
- Lecture 23: Thursday, December 17, 2020. Lecture Slides in PDF
- Lecture 24: Thursday, December 17, 2020. Lecture Slides in PDF
Coding Material
The material related to python that was presented in class is available from as an open-source repository in GitHub.
References
- NEIL C. JONES AND PAVEL A. PEVZNER: An Introduction to Bioinformatics Algorithms. A Bradford Book, The MIT Press, Cambridge, Massachusetts, London, England, 2004.
- JOHN M. ZELLE: Python Programming: An Introduction to Computer Science (Third Edition)
- Jeff Chang, Brad Chapman, Iddo Friedberg, Thomas Hamelryck, Michiel de Hoon, Peter Cock, Tiago Antao, Eric Talevich, Bartek WilczyĆski: Biopython Tutorial and Cookbook