esade

Applied algorithmic thinking (2235.YR.014949.1)

General information

Type:

BAS

Curs:

1

Period:

S semester

ECTS Credits:

4 ECTS

Teaching Staff:

Group Teacher Department Language
Year 1 Irene Unceta Mendieta Operaciones, Innovación y Data Sciences ENG

Prerequisites

There are no specific pre-requisites for this course.

Previous Knowledge

This is an introductory course to both algorithmic thinking and programming with Python. Knowledge of basic mathematical operations and functions will be helpful, including exponential and logarithmic functions, and general algebraic expressions. Other than that, the course is basically self-contained. Knowledge of Python or any other programming language will be useful, especially during the first weeks of class, yet not required. Students with previous programming background and students with no coding experience should both be able to follow the course and complete the different tasks.

Workload distribution

This is a 4-ECTS course, which means that students are expected to dedicate approximately 100hours of workload. (25 hours per ECTS). This workload encompasses various activities, including blended classes, both in-person and online, synchronous, or asynchronous, autonomous student work, study time, or any other time dedicated to the subject.

COURSE CONTRIBUTION TO PROGRAM

Applied Algortihmic Thinking is a course designed to introduce students to the fundamental principles of algorithmic thinking and problem-solving. We will learn how thinking like a computer scientist can improve our everyday lives and how concepts from computer science can be applied to solve real-world problems, such as those related to economic, social or environmental issues. We will learn how to approach such problems systematically, by breaking them down into parts and solving them separately. We will also learn to design and apply algorithms for searching, sorting and ordering through targeted exercises. To implement these techniques in practice, you will be introduced to Python, a well-known programming language, which is highly established in the industry. We will learn the basic elements of Python programming and learn how to translate solutions into programmatic instructions that can be followed by a computer.

This course equips students with the essential skills to learn independently, navigate technical materials effectively, and adapt their learning to their own pace and needs. Emphasizing self-directed learning, students will develop the ability to critically analyze information, identify key concepts, seek additional resources when necessary, evaluate their progress, and confidently seek assistance when required. This course aims to empower students with the tools and mindset needed for success in technical subjects.

Course Learning Objectives

By the end of this course, students will:

1. Develop proficiency in algorithmic thinking. Algorithmic thinking refers to the ability to break down complex problems into simpler tasks, and to do so in a systematic, yet creative way. Students will gain a solid foundation in algorithmic thinking. They will learn to think logically and systematically about problems, and to apply the terminology and concepts of computer science appropriately in different contexts.

2. Write effective code in Python. Effective programming requires mastering of the Python syntax and effectively using the different methods and data structures. Students will learn to generate code that can be easily read and clearly understood by others. They will develop their debugging skills and be able to find and fix errors in their code.

3. Apply algorithms to real-world problems. Algorithmic thinking is a key skill to solve real-world problems across various domains. Students will gain an understadning of how and when to use algorithms to address complex tasks, how to evaluate them and how to improve based on observation and feedback. They will also learn how to design programs to effectively implement those algorithms in practice.

4. Cultivate autonomous learning. Becoming an autonomous learner requires the ability to effectively read and comprehend technical materials, identify important concepts, and extract relevant information. Students will become aware and responsible of their own learning, by evaluating their progress and understanding, identifying areas for improvement and exploring additional sources of information, to deepen their understanding of the topics and expand their knowledge beyond the course materials. They will also acquire the confidence and capability to seek assistance when facing challenges, either by collaborating with peers, or engaging with instructors and teaching assistants.

Methodology

This course is taught in a hybrid format and includes both online and on-campus sessions. To make the best out of the materials, the course will follow the Active Learning methodology.

Students will be required to familiarize themselves with the topics for each session before coming to class. For each lesson there will be a specific pre-class work to bring to class, including readings, exercises or reflection on specific topics and concepts. Students are responsible for their own learning in this regard. A main takeaway from this course will be learning to learn autonomously. Understanding one's needs and dedicating time and effort to them. In terms of dedication, this means that students will have to do most of the work before the class itself. Their job will be to make sure they #understand the concepts and that they can #remember them when asked. Once in class, they will be asked to show that they have prepared themselves for the session by answering a related poll question, submitting their pre-class work (or some portion of it) as a poll response, or adding their pre-class work into a document in the main classroom or breakout notes.

During the lessons students will be introduced to different activities, including polls, breakout rooms, active debate, or coding exercises where they will #apply the concepts discussed in the readings. Each of these activities will deepen their understanding of the concepts and will help them #analyze these concetps by drawing links between them and real-world problems. Because all classes are interactive, students must be prepared to be full participants. Otherwise, this will limit their learning and undermine the experience for the other students. Students' engagement and performance in class activities will be a fundamental part of this course.

As part of their independent work, students will also complete a series of assignments. This will help them solidify their learnings by working on more in-depth, real-world problems where they will get to #create original pieces of work based on the concepts discussed in class. Students will be allowed to discuss coding approaches to solve the assignments but will be asked to produce the work products they submit on their own unless otherwise indicated in the assignment instructions.

This course will be managed through a dedicated moodle website. Students will find there all the necessary materials, including assigned readings, study guides for the different sessions, and coding exercises. Students should familiarize themselves with this environment before the start of the course by completing the pre-course training and checking for updates regularly.

Assessment criteria

Students performance throughout the course will be evaluated in terms of the following criteria:

- 20% Active contribution to learning. Students will be required to show professional maturity and active engagement in the pedagogical activities of the course. Maintaining such an attitude throughout the course presupposes a number of things. First, it assumes that you attend a majority of the sessions. Second, it assumes that you demonstrate interest. Third, it supposes that you contribute to maintaining a positive class atmosphere. Fourth, it presumes that you are prepared, such that when you offer comments, they evidence a previous analysis of the issue being discussed, showing a deep understanding of theories, concepts, and analytical devices presented in previous lectures or in the assigned materials. Fifth, is supposes that you are a good listener, showing it through comments that are relevant to the discussion and/or linked to the comments of others. Finally, it assumes that you an effective communicator, presenting your arguments concisely and convincingly.

- 30% Class activities. Students will demonstrate their understanding of the topics by completing tailored in-class activitites. These may include polls, short exercises, oral explanations of concepts, or short quizzes. In all cases, students will be required to show their understanding of the concepts discussed before, during or after the class. For this purpose, they will have to had completed the readings, come prepared, and made sure they revise contents from previous sessions. The course will follow a continous learning, incremental approach, meaning that you will be required to keep up-to-date with the materials to progress through the semester.

- 50% Assignments. As part of their autonomous work, students will be required to complete a series of assignments during their independent study hours. In these assignment, students will be asked to deepen their understanding of the topics and apply their learnings to solve real-world problems. Assignments may include individual tasks, as well as group projects and oral presentations.

Peer evaluation is applied to group/teams projects


(*) Students who fail to pass the course will be required to sit a retake exam. This exam will account for the 50% of their final course grade.

Bibliography

Readings for each session will be published in the course website. Students will find a detailed study guide in moodle before the start of each session. They will be given relevant material to prepare themselves for class and be pointed to extra, more advanced readings in case they want to dive further into the subject matter.

Many of the existing bibliography, discusses topics that are more advanced than this course. A good introductory overview that covers most of the concepts that we'll discuss in class is this one:

- A Beginner's Guide to Algorithmic Thinking (https://learntocodewith.me/posts/algorithmic-thinking/)

In addition, students are also encouraged to review the following, more detailed references on algorithmic thinking:

- ZINGARO, David (2020): "Algorithmic Thinking: A Problem-Based Solution"
- CORMEN, Thomas H., LEISERSON, Charles E., RIVEST, Ronald L & STEIN, Clifford (2009): "Introduction to Algorithms"

and Python programming:

- A Bite of Python (https://python.swaroopch.com/)
- The Hitchhiker's Guide to Python (https://docs.python-guide.org/writing/style/)

Finally, as part of the course, we will also review divulgatory texts to situate the problems and better understand the value and impact of algorithmic approache din everyday-life situations:

- CHRISTIAN, Brian & GRIFFITHS , Tom (2017): "Algorithms to live by. The computer science of human decisions"
- FRY, Hannah (2019): "Hello world. How to be human in the age of the machines"

Timetable and sections

Group Teacher Department
Year 1 Irene Unceta Mendieta Operaciones, Innovación y Data Sciences

Timetable Year 1

From 2023/9/8 to 2023/9/18:
Each Friday from 13:30 to 15:30. (Except: 2023/9/15)
Each Monday from 16:30 to 18:30. (Except: 2023/9/11)
Each Monday from 14:00 to 16:00. (Except: 2023/9/11)

From 2023/9/15 to 2023/12/1:
Each Friday from 13:00 to 14:00. (Except: 2023/11/10)

From 2023/10/2 to 2023/12/18:
Each Monday from 16:30 to 18:30. (Except: 2023/11/6 and 2023/12/11)
Each Monday from 14:00 to 16:00. (Except: 2023/11/6 and 2023/12/11)