CS 253: Intro to Systems Programming 1/21

Similar documents
COMP s1 Lecture 1

CSE 351. Introduction & Course Tools

Laboratory 1 Semester 1 11/12

Problem Set 1: Unix Commands 1

CSE 303 Lecture 8. Intro to C programming

Computer Science 50 Introduction to Computer Science I. Week 0

C Compilation Model. Comp-206 : Introduction to Software Systems Lecture 9. Alexandre Denault Computer Science McGill University Fall 2006

Programming in C week 1 meeting Tiina Niklander

CS 220: Introduction to Parallel Computing. Beginning C. Lecture 2

Saint Louis University. Intro to Linux and C. CSCI 2400/ ECE 3217: Computer Architecture. Instructors: David Ferry

EL2310 Scientific Programming

CSC 172 Data Structures and Algorithms. Fall 2017 TuTh 3:25 pm 4:40 pm Aug 30- Dec 22 Hoyt Auditorium

CS 240 Fall 2015 Section 004. Alvin Chao, Professor

Programming in C First meeting

Programming in C First meeting Tiina Niklander

CS 241 Data Organization. August 21, 2018

6.S096 Lecture 1 Introduction to C

Eclipse CDT Tutorial. Eclipse CDT Homepage: Tutorial written by: James D Aniello

Working with Shell Scripting. Daniel Balagué

C-Programming. CSC209: Software Tools and Systems Programming. Paul Vrbik. University of Toronto Mississauga

Intermediate Programming, Spring Misha Kazhdan

27-Sep CSCI 2132 Software Development Lecture 10: Formatted Input and Output. Faculty of Computer Science, Dalhousie University. Lecture 10 p.

High Performance Computing MPI and C-Language Seminars 2009

CS 211 Programming I for Engineers

Introduction to C. CS 2060 Week 1. Prof. Jonathan Ventura. Outline Introduction Introduction to C Homework 1 C Coding Style Wrap-up

CSCI455: Introduction to Programming System Design

CpSc 1010, Fall 2014 Lab 10: Command-Line Parameters (Week of 10/27/2014)

Outline. Lecture 1 C primer What we will cover. If-statements and blocks in Python and C. Operators in Python and C

CS354 gdb Tutorial Written by Chris Feilbach

PRINCIPLES OF OPERATING SYSTEMS

EL2310 Scientific Programming

Beyond this course. Machine code. Readings: CP:AMA 2.1, 15.4

COMP1917: Computing 1 1. Introduction

COMP1917: Computing 1 1. Introduction

Programming the DMCC in C

Exercise 1: Basic Tools

CS 3813/718 Fall Python Programming. Professor Liang Huang.

1. Introduction. Course Web Site. COMP1917: Computing 1. Textbook. Occupational Health and Safety (OHS)

CMPT 115. C tutorial for students who took 111 in Java. University of Saskatchewan. Mark G. Eramian, Ian McQuillan CMPT 115 1/32

CS 241 Data Organization using C

CMPUT 201: Practical Programming Methodology. Guohui Lin Department of Computing Science University of Alberta September 2018

COL100 Lab 2. I semester Week 2, Open the web-browser and visit the page and visit the COL100 course page.

Systems Programming Advanced Software Development

CS 3270 Mobile Development for Android Syllabus

3D Graphics Programming Mira Costa High School - Class Syllabus,

C & Data Structures syllabus

Your first C and C++ programs

CSCD 330 Network Programming Spring Lecture 1 - Course Details

CSC258: Computer Organization. Functions and the Compiler Tool Chain

Introduction to C Programming

APT Session 4: C. Software Development Team Laurence Tratt. 1 / 14

Two s Complement Review. Two s Complement Review. Agenda. Agenda 6/21/2011

Programming in C. What is C?... What is C?

Programming in C UVic SEng 265

CS240: Programming in C

Programming in C. What is C?... What is C?

CSE 303: Concepts and Tools for Software Development

Hello, World! in C. Johann Myrkraverk Oskarsson October 23, The Quintessential Example Program 1. I Printing Text 2. II The Main Function 3

EE 209: Programming Structures for Electrical Engineering

Getting started with UNIX/Linux for G51PRG and G51CSA

Announcements. 1. Forms to return today after class:

introduction week 1 Ritsumeikan University College of Information Science and Engineering Ian Piumarta 1 / 20 imperative programming about the course

CMPT 300. Operating Systems. Brief Intro to UNIX and C

Oregon State University School of Electrical Engineering and Computer Science. CS 261 Recitation 1. Spring 2011

Lecture 1. Course Overview Types & Expressions

CSC111 Computer Science II

Computers and Computation. The Modern Computer. The Operating System. The Operating System

CS 3030 Scripting Languages Syllabus

Computer Science 322 Operating Systems Mount Holyoke College Spring Topic Notes: C and Unix Overview

Announcements. CSCI 334: Principles of Programming Languages. Lecture 18: C/C++ Announcements. Announcements. Instructor: Dan Barowy

Introduction to Linux

CS 240 Fall Mike Lam, Professor. Just-for-fun survey:

EECS2031 Software Tools

Hand-on Labs for Chapter 1 and Appendix A CSCE 212 Introduction to Computer Architecture, Spring

Lab 1 Introduction to UNIX and C

Introduction to Computer Systems

Algorithms, Data Structures, and Problem Solving

Programming. Dr Ben Dudson University of York

Introduction to Linux. Woo-Yeong Jeong Computer Systems Laboratory Sungkyunkwan University

Biostatistics 615/815 - Lecture 2 Introduction to C++ Programming

Manual Eclipse CDT Mac OS Snow Leopard

Handouts for Lecture 1

2 Compiling a C program

COP4530 Data Structures, Algorithms and Generic Programming Recitation 3 Date: January 20 & 22, 2009

C - Basics, Bitwise Operator. Zhaoguo Wang

Fall, $ cat welcome.c #include <stdio.h>

CSC209. Software Tools and Systems Programming.

CS 3030 Scripting Languages Syllabus

Workshop Agenda Feb 25 th 2015

University of Colorado at Colorado Springs CS4500/ Fall 2018 Operating Systems Project 1 - System Calls and Processes

COS 217: Introduction to Programming Systems!

27-Sep CSCI 2132 Software Development Lab 4: Exploring bash and C Compilation. Faculty of Computer Science, Dalhousie University

IDE: Integrated Development Environment

Programs. Function main. C Refresher. CSCI 4061 Introduction to Operating Systems

Topic 6: A Quick Intro To C

C / C++ Coding Rules

Chris Riesbeck, Fall Introduction to Computer Systems

IS12 - Introduction to Programming. Lecture 7: Introduction to C

COS 217: Introduction to Programming Systems!

CS120 Computer Science I. Instructor: Jia Song

Transcription:

1/21

Topics Intro to Team-Based Learning (TBL) Syllabus and class logistics What is Systems? 2/21

Team-Based Learning Evidence-based instructional practice proven to increase student motivation and comprehension. You are responsible for reviewing material before class. We make sure you have a basic understanding before we jump into more complicated material. You get instant feedback. Our class discussion is based on what you need. And its just more fun! 3/21

Team-Based Learning (2) Random teams of 3-4 students. Team work is only in-class (quizzes, exercises). TBL quizzes Quiz over reading assignments and pre-quiz exercises. Every week unless specified otherwise. Each quiz will be taken first as an individual. Same quiz will be taken as a team. Instant feedback, partial credit for the team. Keep track of individual vs team performance. In-class exercises Team exercises to make sure you are absorbing material. Give you a break from listening to me talk. Let s make some teams... 4/21

Build Teams Prioritized Sorting Criteria: Do you have any experience programming in C? Number of years? Do you have any real-world software development experience (internship or career)? Prior experience using Linux/Unix command line and system utilities/scripting? Is computer science your first major? Have you ever lived outside of Idaho? Are you excited to take this class? ;-) 5/21

Meet team members and introduce yourself! Syllabus and practice quiz. 6/21

Collaborative Learning using Piazza Piazza is a free online gathering place where students can ask, answer, and explore 24/7, under the guidance of their instructors. Piazza invite sent out Use Piazza to help each other Ask questions anonymously Answer questions and doubts that everyone seems to be having 7/21

Goals By taking this course the student will be able to: design and develop programs of moderate complexity in C, translate their knowledge of object-oriented programming in Java to C, use various tools like IDEs, build tools, debuggers, version control and memory checkers to improve their productivity, use shell commands and system utilities, and use basic system calls related to files, processes and threads. 8/21

Where does 253 fit? Prerequisite for required class: 453 (Operating Systems) Prerequisite for various electives: 425 (Introduction to Computer Networks) 430 (Parallel Computing) 450 ( Language Translation) 455 (Distributed Systems), 457 (Artificial Intelligence) 9/21

Major topics Linux (and Microsoft Windows) programming environments (1 week) C programming (7 weeks) tools (2 weeks) Shell commands and scripts (1 week) Basic systems programming in Linux (and Microsoft Windows) (4 weeks) 10/21

So, what is systems programming? 11/21

Application vs. Systems (1)? 12/21

Application vs. Systems (2)? 13/21

Application vs. Systems (3)? Classify the following: Word Processor Google Chrome Linux Operating System Device Drivers System Utilities Database Software 14/21

Why C? C is the most widely used systems programming language (followed by Java and C++) C is low-level and procedural while Java is high-level and object-oriented. Knowing these two languages gives you a strong basis for learning other languages down the road Overall, Java and C are the two most commonly used languages in the industry. http://www.tiobe.com/index. php/content/paperinfo/tpci/index.html Internship and job interview questions are mostly based on CS 121, 221, 253 and 321. 15/21

Working on Projects Similar to working on projects in CS 121 and CS 221. The GCC C compiler is available on the Linux machines in the labs that can be used directly from the command line. We recommend using VIM text editor for C development (see notes on website). You may, however, use Eclipse (with the CDT plugin) if you want a full featured IDE. Try downloading and configuring VIM before next class - Post questions on Piazza, drop in the tutoring center, come to office hours for help. 16/21

In-Class Exercise: Hello World In your teams, write a valid HelloWorld program in Java. How would you compile and run your program from the command-line? 17/21

First C Program Now, compare and contrast it to this Hello World program written in C. // This code is in hello.c #include <stdio.h> int main(int argc, char *argv[]) { printf("hello world!\n"); return 0; } 18/21

First C Program Note: main prototype is more relaxed than Java. All of the following are valid. // produces warning, but compiles (don't use). main() { } // compiles, but unspecified arguments (don't use). int main() { } // compiles, specifies no arguments (use this). int main(void) { } 19/21

Compiling and Running gcc -Wall helloworld.c The compiler is called gcc, which stands for the GNU C Compiler. It is a free, open source compiler that is widely used Creates an executable named a.out Type./a.out to run the program The option -Wall asks the compiler to provide all warnings about the code, which can save us a lot of effort later! gcc -Wall helloworld.c -o helloworld To create an executable called helloworld Now create a C project in Eclipse and compile and run the hello world program from Eclipse 20/21

Exercises Write, compile and run Hello World in C Activate your Piazza account Read pages 5-21 of the K&R C book Configure VIM and/or Eclipse on your computer 21/21