Dell Customer Communication - Confidential CS 253 - INTRODUCTION TO SYSTEMS PROGRAMMING Department of Computer Science - Boise State University Catalog Description Structure of C programs, functions, scope, arrays, structures, pointers, and run - time memory management. Generic programming techniques. Introduction to build systems, debugging techniques, version control, shell scripting and process management. Basic sys tems programming including topics such as streams, buffers, pipes, system calls, processes, threads and libraries for Linux and Microsoft Windows . PREREQ: CS 221. COREQ: CS - HU 250 The Instructor • B rian Merrick o Phone: 208 - 426 - 4124 o Email: brianmerrick@boisestate.edu o Office hours: By appointment Required T extbooks ● ZyBooks – Code BOISESTATECS253MerrickSummer2021 ● Managing Projects with GNU Make, Robert Meclenburg [free online!] Course Learning objectives Introduction ● Identify and understand the course materials, activities, and assessments ● Review p rogramming language concepts ● C program organization and the main function ● Automatic variables and the int data type ● Control statements ● I/O functions including getchar and printf Toolchain s, Testing and Software Development ● Apply basic tools needed to develop C code (compiler, debugger s , build system) ● Apply functional and unit testing approaches. Find/fix memory leaks. C Programming • Introduce the C Standard Library • Apply safe string processing techniques in C • Identify how arrays are different in C • Understand conditional compilation and header file guards Dell Customer Communication - Confidential • Recognize the different phases of building a program and identify the difference between a compilation error, linking error, and runtime error. Advanced Programming • R eference and pointer variables • Introduce the C memory management (malloc, free) • Understand pass by reference vs pass by value • Identify the difference between a C Standard Library call and a s ystem call • Develop the skills to read code that was written by someone else • Security and the buffer overflow problem • Portability topics for popular operating systems Processes • Introduce the concept of a process • Intro duce fork, wait and exec • Introduce the memory layout of an executable (text, data, stack, heap) Signals • Introduce the concept of a signal • Introduce the concept of asynchronous programming. • Apply signal handling Pipes • Introduce the concept of a pipe • Apply pipes between a parent and child process Libraries • Shared vs. static libraries • Building static libraries Threads • Introduce concurrency with threading in java • Introduce the concept of threading in C with the pthread library • Shared data, critical sections and race conditions • The producer - consumer problem • Mutual exclusion with monitors and mutex es Teaching Style CS253 employs many opportunities t o participate in activities demonstrating the course objectives in the classroom and practice them in programming projects with coaching from the Kount Tutoring Center and p iazza. In - class polls emphasize key learnings th at are later assessed with in - class blackboard quizze s. Dell Customer Communication - Confidential Software and Hardware The in - class exercises, polls , quizzes and on - line support require the use of an ssh client and browser on your laptop . A phone with the piazza and blackboard apps installed can also be helpful Most, if not all, students do their programming projects i n the CS Lab which has the required software development environment ( GNU C , GNU make, java, git and backpack) installed U se of your own equipment for programming projects is no t recommended or supported as setting up the required environment can be time - consuming. Even the instructor, who stubbornly ignores this advice, gets caught by minor differences between his own and the lab equipment. ;) Minimum basic skills required for this class At a minimum a student should already know the following to be successful in this class : ● Use of the bash shell and commands (e.g. ls, cd, pwd, rm, mkdir, cp, cat, grep, man, etc) ● Familiarity with the g it version control system (we begin using git near midterm) ● Familiarity with a debugger including breakpoints ● Java programming including primitive and reference types, local variables and attributes, static variables and methods, expressions, classes and objects, arrays, and control statements ● Elementary data structures including linked lists and stacks Exams and Quizzes ● The final exam is taken o n - line using Blackboard and proctored by the BSU Testing Center ● Quizzes - We have a n on - line Blackboard quiz almost every week Homework and Programming Assignments There will be man y assignments throughout the semester. Written communication skills are assessed in documentation for programming assignments. Programming assignments require the implementation of working programs using the language constructs and techniques introduced in class. Programs must execute and compile on the CS lab machines using the installed compiler. Any programming assignment that does not compile and run on the CS lab machines wi ll not be graded. All work is to be done individually unless explicitly allowed by the instructor. Any group projects during this class will be clearly marked as such ; you must assume ALL projects and homework are individual unless told otherwi se. Excuse d Absences and Late Work CS253 quizzes, exams and projects are graded electronically and the results become available soon after everyone has completed the assignment. There are no “ makeup ” quizzes, exams or projects except as provided by the Official Stu dent Absence Policy, https://policy.boisestate.edu/academic - affairs - student/policy - title - official - student - absence - policy . Please make prior arrangements with the instructor for an upcoming official absence. L ate projects initially receive a zero and are penalized one letter grade per day . Projects are not accepted after four late days. Dell Customer Communication - Confidential Grading At the end of the semester, your total score on Blackboard is distributed as follows: • Projects – 40% (400 points) • Quizzes – 35% (350 points) • Final exam – 25% (250 points) Blackboard assigns letter grades using the university’s built - in grading schema , calc ulated from your total score divided by t he total possible points (1000), as illustrated below: Extra credit points, if any , are added to your total score in Blackboard. Dell Customer Communication - Confidential Institutional policies and Accessibility The Department of Computer Science is committed to providing and maintaining a supportive educational environment for all. We strive to be welcoming and inclusive, respect privacy and confidentiality, behave respectfully and courteously, and practice intel lectual honesty. Disruptive behaviors (such as physical or emotional harassment, dismissive attitudes, and abuse of department resources) will not be tolerated. The complete Code of Conduct is available on the University's website. Academic Honesty and Obtaining Assistance Students are expected to work on their own unless explicitly instructed otherwise. For more information, please visit the University's web page regarding academic integrity Most of us will someday encounter a “it just can’t do that” moment when debugging a program ; you will likely require assistance with a project --- it’s part of learning . Acceptable sources of assistance are: • The tutors in the Kount Tutoring Center • Piazza: it’s ok to post screenshots and c ode snippets illustrating the problem and the code that “just can’t do that.” It’s also ok to post answers to student questions on piazza. • Contact the instructor when the tutors and piazza are unable to resolve the problem H iring a “tutor” (e.g. http://do myhomework.com) that has not been approved by the instructor or by the University may be considered academic dishonesty and may result in immediate failure of the course. If you wish to hire your own personal tutor, we strongly recommend you contact your instructor first. Important Links ● As a student you are responsible for knowing the policies that have been set at Boise State. Please review them at: http://registrar.boi sestate.edu/general - information - and - policies/ ● If you need help with accessibility you can visit the educational access center at: https://eac.boisestate.edu/ ● Please review the safety document located at: http://coen.boisestate.edu/cs/safetydocument ● Please review the student code of conduct at: https://deanofstudents.b oisestate.edu/student - code - of - conduct/