Skip to main content

Programming for networks and information security (5 cr)

Code: TT00BO26-3005

General information


Enrollment

02.08.2023 - 31.08.2023

Timing

01.09.2023 - 31.12.2023

Number of ECTS credits allocated

5 op

Mode of delivery

Contact teaching

Unit

Engineering and Business

Teaching languages

  • English

Seats

0 - 90

Degree programmes

  • Degree Programme in Information and Communication Technology

Teachers

  • Tommi Tuomola

Teacher in charge

Tommi Tuomola

Groups

  • PTIETS22dncs
    PTIETS22 Data Networks and Cybersecurity
  • PTIVIS22T
    Data Networks and Cybersecurity
  • 05.09.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 08.09.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 08.09.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 08.09.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 12.09.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 15.09.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 15.09.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 15.09.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 19.09.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 22.09.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 22.09.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 22.09.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 26.09.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 29.09.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 29.09.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 29.09.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 03.10.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 06.10.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 06.10.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 06.10.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 10.10.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 13.10.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 13.10.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 13.10.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 24.10.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 27.10.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 27.10.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 27.10.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 31.10.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 03.11.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 03.11.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 03.11.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 07.11.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 10.11.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 10.11.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 10.11.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 14.11.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 17.11.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 17.11.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 17.11.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 21.11.2023 08:00 - 10:00, Luento, Programming for networks and information security TT00BO26-3005
  • 24.11.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 24.11.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 24.11.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 01.12.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 01.12.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 01.12.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 08.12.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 08.12.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005
  • 08.12.2023 12:00 - 14:00, R2, Programming for networks and information security TT00BO26-3005
  • 15.12.2023 08:00 - 10:00, R3, Programming for networks and information security TT00BO26-3005
  • 15.12.2023 10:00 - 12:00, R1, Programming for networks and information security TT00BO26-3005

Objective

The goal of this workshop is to introduce the students to the concepts and techniques for programming a network device. Upon completion of the workshop, students will be able to:
- Understand the value, set-up and use of software concepts and tools relevant to network programmability (Python scripting, Git, JSON, Postman, APIs).
- Describe a different approach to software-defined networking (SDN), including central application policy control.
- Create simple applications in Python with REST APIs.
- Use the Cisco DevNet Sandbox to interact with programmable devices using real-world APIs on Cisco APIC-EM programmable controllers.
- Create a variety of programs to interact with the Cisco APIC-EM APIs.

Content

Introduction to Python and Programming Basics
- Code and Communities of Practice
- Python Basics: Use Python to create programs that accept user input and read and write to external files
- APIs and Parsing JSON: Create a Python application that accesses an API based on user input and processes and displays the JSON data that is returned.
- Programming the APIC-EM 2.1
- Network Programmability: Explain how the Cisco APIC-EM enhances network management and performance
- Programming the APIC-EM REST API: Explain features of the APIC-EM API and documentation
- Create Python software tools for working with the APIC-EM API

Materials

Teacher provided lecture material
Supporting public online material
All needed material (or at least a link to them) will be available in itslearning.

Teaching methods

Lectures and program examples
Programming exercises
Independent learning

Exam schedules

Final exam in december.

International connections

Given program examples and programming exercises support each topic studied during the lectures. Additional material in the form of tutorials and reliable information sources is provided.

Student workload

Contact hours 56 h
Inpendent studying 79h, including:
- Studying the course material
- Completing exercises
- Preparation for the exam

Content scheduling

The goal of this course is to introduce the student to the programming related concepts and techniques often needed in the field of data networks and information security.

Upon completion of this course, students will be able to write small Python scripts to:
-Parse different kinds of data (JSON, log data etc.)
-Connect and query a database
-Query an external API for data and build a simple REST API of their own

The contents of the course:
-JSON format
-Using basic Python data structures to store data
-Parsing data in Python
-Basics of databases - concepts of relational and non-relational databases
-Querying databases with Python
-Concept of an API
-Querying an API with Python
-Building your own RESTful API
-Command line arguments and piping content to a Python script
-Basics of osquery

Further information

Itslearning and contact classes are the main communication channels used on this course.

The student is required to have a computer capable of running a simple Ubuntu virtual machine.

Evaluation scale

H-5

Assessment methods and criteria

Final exam
Programming exercises returned throughout the course

Qualifications

Introduction to Programming or equivalent competence in Python.