Introduction to C Programming

Introduction to C Programming

Introduction to C Programming Jan Faigl Department of Computer Science Faculty of Electrical Engineering Czech Technical University in Prague Lecture 01 B3B36PRG – C Programming Language Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 1 / 79 Overview of the Lecture Part 1 – Course Organization Course Goals Means of Achieving the Course Goals Evaluation and Exam Part 2 – Introduction to C Programming Program in C Values and Variables Expressions Standard Input/Output K. N. King: chapters 1, 2, and 3 Part 3 – Assignment HW 01 Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 2 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Part I Part 1 – Course Organization Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 3 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Course and Lecturer B3B36PRG – Programming in C Course web page https://cw.fel.cvut.cz/wiki/courses/b3b36prg Submission of the homeworks – BRUTE Upload System https://cw.felk.cvut.cz/brute and individually during the labs for the homeworks with STM32F446 board Lecturer: doc. Ing. Jan Faigl, Ph.D. Department of Computer Science – http://cs.fel.cvut.cz Artificial Intelligence Center (AIC) http://aic.fel.cvut.cz Center for Robotics and Autonomous Systems (CRAS) http://robotics.fel.cvut.cz Computational Robotics Laboratory (ComRob) http://comrob.fel.cvut.cz Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 5 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Course Goals Master (yourself) programming skills Labs, homeworks, exam Acquire knowledge of C programming language Acquire experience of C programming to use it efficiently Your own experience! Gain experience to read, write, and understand small C programs Acquire programming habits to write easy to read and understandable source codes reusable programs Experience programming with Workstation/desktop computers – using services of operating system E.g., system calls, read/write files, input and outputs Multithreading applications Embedded applications – STM32F446 Nucleo Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 6 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Course Organization and Evaluation B3B36PRG – Programming in C Extent of teaching: 2(lec)+2(lab)+5(hw) Completion: Z,ZK Credits: 6 Z – ungraded assessment, ZK – exam Ongoing work during the semester Homeworks mandatory, optional, and bonus parts Semestral project – a combined application for a workstation and STM32F446 Exam test and implementation exam Be able to independently work with the computer in the lab (class room) Attendance to labs, submission of homeworks, and semestral project Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 7 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Resources and Literature Textbook „C Programming: A Modern Approach“ (King, 2008) C Programming: A Modern Approach, 2nd Edition, K. N. King, W. W. Norton & Company, 2008, ISBN 860-1406428577 The main course textbook Lectures – support for the textbook, slides, comments, and your notes Demonstration source codes are provided as a part of the lecture materials! Laboratory exercises – gain practical skills by doing homeworks (yourself) Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 9 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Further Books Programming in C, 4th Edition, Stephen G. Kochan, Addison-Wesley, 2014, ISBN 978-0321776419 21st Century C: C Tips from the New School, Ben Klemens, O’Reilly Media, 2012, ISBN 978-1449327149 The C Programming Language, 2nd Edition (ANSI C), Brian W. Kernighan, Dennis M. Ritchie, Prentice Hall, 1988 (1st edition – 1978) Advanced Programming in the UNIX Environment, 3rd edition, W. Richard Stevens, Stephen A. Rago Addison-Wesley, 2013, ISBN 978-0-321-63773-4 Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 10 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Further Resources The C++ Programming Language, 4th Edition (C++11), Bjarne Stroustrup, Addison-Wesley, 2013, ISBN 978-0321563842 Introduction to Algorithms, 3rd Edition, Cormen, Leiserson, Rivest, and Stein, The MIT Press, 2009, ISBN 978-0262033848 Algorithms, 4th Edition, Robert Sedgewick, Kevin Wayne, Addison-Wesley, 2011, ISBN 978-0321573513 Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 11 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Lectures – Spring Semester Academic Year 2018/2019 Schedule for the academic year 2018/2019 http://www.fel.cvut.cz/en/education/calendar.html Lectures: Dejvice, Lecture Hall No. T2:D3-209, Tuesday, 14:30-16:00 14 teaching weeks 13 lectures Thursday 9.5.2019 – classes as on Wednesday (odd calendar week) Tuesday 14.5.2019 – classes as on Wednesday (even calendar week) Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 12 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Teachers Ing. Petr Čížek Ing. Miloš Prágr Bc. Jindřiška Deckerová Ing. Petr Váňa BRUTE Upload System Ing. Rudolf J. Szadkowski Detekce plagiátů Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 13 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Communicating Any Issues Related to the Course Ask the lab teacher or the lecturer Use e-mail for communication Use your faculty e-mail Put PRG or B3B36PRG to the subject of your message Send copy (Cc) to lecturer/teacher Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 14 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Computers and Development Tools Network boot with home directories (NFS v4) Data transfer and file synchronizations – ownCloud, SSH, FTP, USB Compilers gcc or clang https://gcc.gnu.org or http://clang.llvm.org Project building make (GNU make) Examples of usage on lectures and labs Text editor – gedit, atom, sublime, vim https://atom.io/, http://www.sublimetext.com/ http://www.root.cz/clanky/textovy-editor-vim-jako-ide C/C++ development environments – WARNING: Do Not Use An IDE http://c.learncodethehardway.org/book/ex0.html Debugging – gdb, gdbgui, cgdb, ddd Code::Blocks, CodeLite http://www.codeblocks.org, http://codelite.org NetBeans 8.0 (C/C++), Eclipse–CDT CLion – https://www.jetbrains.com/clion Embedded development for the Nucleo ARMmbed – https://developer.mbed.org/platforms/ST-Nucleo-F446RE System Workbench for STM32 (based on Eclipse) Direct cross-compiling using makefiles Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 15 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Services – Academic Network, FEE, CTU http://www.fel.cvut.cz/cz/user-info/index.html Cloud storage ownCloud – https://owncloud.cesnet.cz Sending large files – https://filesender.cesnet.cz Schedule, deadlines – FEL Portal, https://portal.fel.cvut.cz FEL Google Account – access to Google Apps for Education See http://google-apps.fel.cvut.cz/ Gitlab FEL – https://gitlab.fel.cvut.cz/ Information resources (IEEE Xplore, ACM, Science Direct, Springer Link) https://dialog.cvut.cz Academic and campus software license https://download.cvut.cz National Super Computing Grid Infrastructure – MetaCentrum http://www.metacentrum.cz/cs/index.html Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 16 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Homeworks 10+1 homeworks 7 for the workstation and 3 for the embedded Nucleo platform https://cw.fel.cvut.cz/wiki/courses/b3b36prg/hw/start 1. HW 00 – Testing (0 points) 2. HW 01 – ASCII Art (2 points) 3. HW 02 – Prime Factorization (2 points + 4 points optional) 4. HW 03 – Caesar Cipher (2 points + 2 points optional) 5. HW 04 – Text Search (2 points + 3 points optional) 6. HW 05 – Matrix Calculator (2 points + 2 points optional + 5 points bonus) 7. HW 06 – Linked List Queue with Priorities (2 points + 2 points optional) 8. HW 07 – Circular Buffer (2 points + 2 points optional) 9. HW 08 – Nucleo – LED and Button (2 points) 10. HW 09 – Nucleo – Single Byte Serial Communication (2 points) 11. HW 10 – Nucleo – Computation and Communication: (2 points) All homeworks must be submitted to award an ungraded assessment Late submission is penalized! Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 17 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Semester Project A combination of application for workstation (multi-threading / communication / interaction ) and program for the Nucleo STM32F446 Computation on the embedded platform via control application Mandatory task can be awarded up to 20 points Bonus part can be awarded for additional 10 points Up to 30 points in the total for the semestral project Distributed computation using several Nucleo STM32F446 boards Minimum required points: 15! Deadline – best before 15.5.2019 Further updates and additional points possible! Deadline – latest 19.5.2019 Jan Faigl, 2019 B3B36PRG – Lecture 01: Introduction to C Programming 18 / 79 Course Goals Means of Achieving the Course Goals Evaluation and Exam Course Evaluation Maximum Required Minimum Points Points Points Semestr Exam Homeworks 40 20 Semestr Project 30 15 Exam test 20 10 Implementation exam 20 10 Total 110 points 35 points

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    72 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us