ELEC-A7100 - Basic Course in C programming, Lecture, 9.1.2023-16.5.2023
Kurssiasetusten perusteella kurssi on päättynyt 16.05.2023 Etsi kursseja: ELEC-A7100
Osion kuvaus
-
General information
This course is about C Programming language and aims at introducing you to its syntax and features. On this page, you can find detailed information on the course's organizational details.
- The course starts with a kick-off session on Monday, 09.01.2023 @ 12:15.
This will be an online session on the General Channel of Microsoft Teams. The session will be recorded.
- The official course language is English, and therefore all information in MyCourses is in English. However, the course material and assignments are also available in Finnish. In exercises, you can get help in both English and Finnish.
- Course materials and exercises are available in the A+ System. Materials are available in English and Finnish.
- Course personnel can be contacted by email at
elec-a7100@aalto.fi.
All emails should be in English.
Do not use email for questions on course exercises or the environment setup, but use either Zulip or live exercise sessions for that.
- There are weekly online exercise sessions on
Live exercise sessions Channels of Teams.
Participation is not mandatory, but you can check in at any time during the session if you want to discuss exercises or other course topics.
The exercise sessions are arranged at the following times with the following assistants:
Mon 10-12 Tue 12-14 Tue 16-18 Wed 14-16 Wed 16-18 Thu 10-12 Fri 10-12 Andrey Tonis Oskari Oskari Juha Andrey Tonis Tran Mark Rami Juha Rami Kaius Kaius Kasper Cao My Cao My Tuan Tuan Mark Kasper Pyry Tuukka Tuukka Tran Pyry
Learning outcomes
After completing this course, you will:
-
master C Programming Language Syntax, which will allow you to read and understand software written in this language.
-
master basic C Programming Language semantics to create meaningful statements in this programming language.
-
use C language to implement computational tasks.
-
use C language development environments to write, build and validate software.
Course organization
This course is organized as a basic course in the C programming language. The presented content makes the following assumptions:
- The presented content is not a complete reference to the language so
that some details are left out of the content.
The primary purpose of the provided content is to introduce you to the important features and syntax of the C programming language.
- Familiarity with the basic terminology of computer programming. For example, it is assumed that you recognize functions, variables, data structures, etc., although whenever possible these concepts are briefly summarized.
-
Basic C Programming Language Syntax: In this part, the basic software constructs of the language are presented. It is composed of 7 modules including this module.
-
Midterm exam: The exam is a short-duration exercise in the A+ system. You will need to solve 4 programming exercises in 28 hours.
-
Standard Library of C Programming Language: In this part, the standard library constructs are presented. It has 2 modules.
-
Programming project: At the end of the course, you will be assigned to a programming project. The project will require you to use the C programming software constructs to reach the objectives of the assignment.
Learning a programming language, in general, is an individual effort that must be supported by practicing with hands-on exercises. This course is accordingly organized into 8 modules following this module, each of which aims at introducing you to a certain topic and asking you to solve several programming exercises. There will be an online exam, which is a short time-limited exercise that measures your learning level. You will be also asked to solve some programming problem after completing the modules.
In this course, we will have two online lectures.
-
Course kick-off session, and
-
Project kick-off session.
The course modules and their deadlines are as follows:
-
Course kick-off session on Microsoft Teams General Channel @ Monday, 09.01.2023 @ 12:15.
-
C Programming Language Basics
The modules of this part are mandatory. You must get 50 points or more from the exercises in each module.
-
Getting started (Deadline: Friday, 20.01.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Basic concepts (Deadline: Friday, 27.01.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Conditional statements and loops (Deadline: Friday, 03.02.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Binary operations (Deadline: Friday, 10.02.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Pointers and arrays (Deadline: Friday, 17.02.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Dynamic memory (Deadline: Friday, 03.03.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
Advanced data types (Deadline: Friday, 17.03.2023 @ 19:59)
You must collect at least 50/100 points from the assignments.
-
-
Midterm exam (Start Time: Thursday, 23.03.2023 @ 07:59 Deadline: Friday, 24.03.2023 @ 11.59)
You must get 10/15 points from the exam.
-
Standard Library of C Programming Language
-
Basic functions (Deadline: Friday, 31.03.2023 @ 19:59)
You can collect 100 points from the exercise assignments.
-
Input/output streams (Deadline: Sunday, 16.04.2023 @ 19:59)
You can collect 100 points from the exercise assignments.
-
-
Project kick-off session on Microsoft Teams General Channel @ Monday, 17.04.2023 @ 12:15.
-
Programming project (Deadline: Friday, 28.04.2023 @ 19:59)
You can collect a maximum of 10 points from the project.
Programming exercises
The programming exercises are designed so that if you have read the text from the beginning, you should be able to do the exercise with the information you have read until that point. Therefore, when you encounter an exercise, you could stop reading and try to do the exercise. The exercises are organized as described below.
-
In each section, you will have a chance to collect 100 points for exercises.
-
There are two types of exercises:
-
Tasks You will be assigned in each section to allow you practice the introduced programming concept. You will need your own development environment for developing and testing your program before submitting the source code to the automatic grading server.
-
Questionnaires You are required to answer different questions. Each module has at least Prologue and Epilogue questionnaires. In Epilogue questionnaires, you can provide feedback to allow the course organizers to improve the course organization in the upcoming course realizations. For a perfect grade, you are required to submit your answers to the questionnaires.
-
-
The programming tasks can include multiple subtasks. Each correctly implemented subtask will give you some points. However, there will be point reductions if:
-
the compiler produces warnings, and 50% of the points are deducted.
-
Valgrind tool finds any errors, 50% of the remaining points are deducted (this tool is used after Module 6 and onwards).
-
-
It is possible to submit the exercises within a week later than their deadlines. But there will be a 30% of penalty.
Mid-term exam (short time-limited exercise)
After completing the first part, Basic C Programming Language Syntax, there will be a short time-limited exercise to measure your basic syntax-related understanding of the language. This special exercise will be composed of 4 questions. Each question will be selected randomly from a predefined set of questions. You will have 28 hours to submit your solutions.
Programming project
After completing the course material (of both parts), you will be randomly assigned a programming project. In the project, you will be required to solve a programming task that will require:
-
Acquire user input (commands and/or arguments) from the standard input stream.
-
Modify the state of a database according to a user command.
-
Save the modifications to a file.
-
Load the program state from a file.
-
Display the program state on the standard output stream.
The details of the programming task instructions and guidelines will be made available two weeks before the course ends.
References
The material presented here is directed toward exercises to immediately practice the concepts you have learned by solving several exercises. In order to get additional information, you can consult the de-facto reference book on C Programming language.
-
“The C Programming Language” (book) by Brian W. Kernighan and Dennis M. Ritchie (second edition).
We strongly encourage you to frequently use online C language standard library reference to get more information about frequently used functions throughout this material.
-
“C library” (online) http://www.cplusplus.com/reference/clibrary/.
Grading
The four-course parts have the following weights on the final grade.
-
Basic C Programming Language Syntax: 30%.
-
Midterm exam: 20%.
-
Standard Library of C Programming Language: 20%.
-
Programming project: 30%.
The sub-grade of each part will be calculated as follows:
-
Part I Exercises sub-grade when total collected exercise points out of maximum 700 points is calculated by
-
Exam sub-grade when total collected exercise points out of maximum 15 points is calculated by
-
Part II Exercises sub-grade when total collected exercise points ia out of maximum 200 points is calculated by
-
Programming project sub-grade when total collected exercise points is out of maximum 10 points is calculated by
The sub-grade formulas are applied if and only if you pass the minimum requirements of the course.
-
You are required to get 50 points or more from each of Modules 1 to 7 (Part I: C Programming Language Basics). In other words, you should get at least 350 points, but also each module must exceed 50 points limit.
-
You must get at least 10/15 points from the exam.
If you fulfill the basic requirements, your final grade will be calculated as follows
Workload
The following workload is estimated.
-
The online lectures should take no more than 4 hours.
-
Each module should take roughly 10 hours. However, some modules are more difficult than others.
We are expecting that Modules 1 - 3 takes much less time than 10 hours, but Modules 4 - 9 would take more than 10 hours.
Module 7: Advanced data types is more difficult than others. Please schedule your time accordingly.
-
The exam should take around 2 hours (excluding 10 hours of preparation).
-
The project is expected to take around 15 - 20 hours of work.
Therefore, this course requires 120-130 hours of work.
Working practices
-
During the course, we are going to use Microsoft Teams for online meetings.
-
There will be live exercise sessions in the Live exercise sessions Channels of Teams. Teaching assistants will answer your questions during these sessions.
The schedule for these meetings is
Online exercise sessions Mon 10-12 Tue 12-14 Tue 16-18 Wed 14-16 Wed 16-18 Thu 10-12 Fri 10-12 Andrey Tonis Oskari Oskari Juha Andrey Tonis Tran Mark Rami Juha Rami Kaius Kaius Kasper Cao My Cao My Tuan Tuan Mark Kasper Pyry Tuukka Tuukka Tran Pyry
-
We will use the Microsoft Teams for general announcements.
In some cases, we will also use MyCourses to send you announcement emails in addition to Microsft Teams.
Some annoucements will also be posted Zulip organization of the course.
-
Please post your written questions regarding the exercises to our Zulip organization.
-
General course organization-related questions can be asked in Microsoft Teams General Channel or the General stream of the Zulip organization.
Course personnel
Resposible teacher: Yusein R. Ali
Head assistant: Niilo Heinonen
Teaching assistants:
- Oskari Saarinen
- Juha Ponkkonen
- Rami Ghoniem
- Tonis Pärtel
- Andrey Melnyk
- Kaius Karvo
- Mark Heidmets
- Tran Duong
- Tuan Cong Nguyen
- Cao My
- Tuukka Himanka
- Kasper Kivimäki
- Pyry Weckman
Code of academic integrity
This course is intended to be an individual study. Therefore, you should not copy the work of others, and obey the Aalto University Code of Academic Integrity.
If we identify violations, you might face severe consequences.
- The course starts with a kick-off session on Monday, 09.01.2023 @ 12:15.