Programming I Syllabus
Instructors
Jaroslavs Samčuks (Software Engineer)
- Email: yarcat@gmail.com
- Github: @yarcat
- Telegram: @j_yarcat
- LinkedIn: yaroslavsamchuk
Pāvels Zaičenkovs (PhD, Software Engineer)
- Email: zaichenkov@gmail.com
- Github: @zayac
- Telegram: @zaichenkov
- LinkedIn: zaichenkov
Need to reach out?
You are a student and have a question related to course content
Use a chat in MS Teams.
You are a student and have a question not related to the course content, or you are a parent
Reach out to the assigned instructor privately using email or Telegram (see the details above).
You have a feedback that you’d like to share
You may provide an anonymous feedback with the instructors on any matter using this form.
Description
Learn and explore the fascinating world of computer programming. The goal of the course is to help students develop programming, mathematical and problem-solving skills. The course may also inspire some students to choose programming as their future career.
By the end of the course, a student is expected
- to analyze simple daily work processes
- to see automation possibilities in the process or their parts
- to describe the problem and its desired solution using specification of the software requirements
- to implement solutions to simple problems.
Overview
The course covers the following topics and more:
- introduction to computers
- file and directory manipulation
- version control systems
- the structure of a program
- control structures
- basic data types and structures
- functions
- modules
- software testing
- binary logic
- sets
- machine representation of data structures
- input/output interfaces
- files and file systems
- databases
- command line interfaces
- software development models
- documentation
- algorithm complexity
- machine learning
- security
- web applications
- user intefaces
- mobile development
- cross compilation
During the course we will use the Go programming language as a tool to teach programming concepts.
Prerequisites
Course materials are hosted from GitHub. Students have to create (or use an existing one) a GitHub account and share the account name with the course instructors.
Furthermore, the following software is required for participating in the course:
- git+bash: Git is a version control system. Bash is a Unix shell. Bash needs to be installed together with Git in Windows operating system. You don’t need to install Bash if you are using Linux or Mac OS operating systems. For installation instructions, check this video.
- Go programming language distribution: Go is a programming language. For installation instructions, check this video.
- Visual Studio Code: Visual Studio Code is a code editor. Go extension has to be installed from the Visual Studio Code. Check the video for installation instructions.
Furthermore, students exercise their file and directory manipulation skills using file://maniac game.
Outline (Semester #1)
Date | Topic |
---|---|
Thursday, September 2 | Introduction to programming |
Monday, September 6 | File and directory manipulation (Command Line Cheat Sheet) |
Thursday, September 9 | Introduction to version control (Git) (Git Cheat Sheet) (assignment |
Monday, September 13 | Introduction to version control (Git & GitHub) (Git Cheat Sheet) |
Thursday, September 16 | Introduction to IDE (VS Code) |
Monday, September 20 | Variables; basic arithmetic operations (assignment) |
Thursday, September 23 | Program structure. Github assignments. |
Monday, September 27 | If conditions (assignment) |
Thursday, September 30 | If conditions |
Monday, October 4 | For loops without range (assignment) |
Thursday, October 7 | For loops without range |
Monday, October 11 | Mid-term test 1 |
Thursday, October 14 | For loops without range |
Monday, October 18 | 🧘 |
Thursday, October 21 | 🧘 |
Monday, October 25 | 🧘 |
Thursday, October 28 | 🧘 |
Monday, November 1 | Functions and table-based testing |
Monday, November 4 | Arrays and slices |
Monday, November 8 | Arrays and slices |
Thursday, November 11 | Arrays and slices |
Monday, November 15 | Arrays and slices |
Thursday, November 18 | 🇱🇻 |
Monday, November 22 | Arrays and slices |
Thursday, November 25 | Mid-term test-2 |
Monday, November 29 | Strings |
Thursday, December 2 | Strings |
Monday, December 6 | Strings |
Thursday, December 9 | Strings |
Monday, December 13 | Practice |
Thursday, December 16 | Practice |
Monday, December 20 | Final exam |
Assignments
Projects
Lightning Talks
During the course students are required to deliver 5 minute lighting talks (in a presentation format) during a lesson on a topic selected by a student. The students should sign up for the presentation using a table in this page.
Grading
Student’s final grade is calculated as a weighted total itemized as follows:
- Homework and class assignments = 30%
- Midterm tests = 30%
- Final exam = 30%
- Lighting talks = 10%