Practical Programming Methodology

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

CS240: Programming in C

CSC116: Introduction to Computing - Java

Sprint 2017, Sul Ross State University

CIS* Programming

Advanced Programming CMPS 109

Object-Oriented Programming CSCI-UA

CSC116: Introduction to Computing - Java

Introduction. Overview of 201 Lab and Linux Tutorials. Stef Nychka. September 10, Department of Computing Science University of Alberta

SWE3004: Operating Systems. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

ECE Object-Oriented Programming using C++ and Java

CMPUT 391 Database Management Systems. Fall Semester 2006, Section A1, Dr. Jörg Sander. Introduction

ECE 156A - Syllabus. Description

Course and Unix Intro

Object-Oriented Programming Fall Robert Grimm, New York University

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

COMP 321: Introduction to Computer Systems

COMP3221: Microprocessors and. Embedded Systems

Welcome to CS 241 Systems Programming at Illinois

Introduction to Computer Systems

CS120 Computer Science I. Instructor: Jia Song

Data Structures. Subodh Kumar. Dept of Computer Sc. & Engg. IIT Delhi. Bharti 422)

Announcements. 1. Forms to return today after class:

Tutorials. Tutorial every Friday at 11:30 AM in Toldo 204 * discuss the next lab assignment

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

Operating Systems (ECS 150) Spring 2011

SSE3044: Operating Systems

Elementary Computing CSC /01/2015 M. Cheng, Computer Science 1

CSC116: Introduction to Computing - Java

Syllabus Class schedule Section 1: Tuesdays 9:00 11:50 Section 2: Tuesdays 1:00 3:50

Today. An Animated Introduction to Programming. Prerequisites. Computer programming

CS 241 Data Organization using C

CS 378 (Spring 2003) Linux Kernel Programming. Yongguang Zhang. Copyright 2003, Yongguang Zhang

Object-Oriented Programming CSCI-UA

Introduction to Computer Systems

McGill University COMP-202A Introduction to Computing I Summer 2006 webct.mcgill.ca

CS111: Intro to Computer Science

Compilers for Modern Architectures Course Syllabus, Spring 2015

COMP-202A: Introduction to Computing 1

CMPE012 Computer Engineering 12 (and Lab) Computing Systems and Assembly Language Programming. Summer 2009

WELCOME TO CS 16! Enrollment status: 117/ Problem Solving with Computers-I

Object-Oriented Programming Fall Robert Grimm, New York University

Object Oriented Programming Using C++

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

Introduction to Computer Systems

COMP-202A: Introduction to Computing 1

Introduction to UNIX

VE281 Data Structures and Algorithms. Introduction and Asymptotic Algorithm Analysis

CSc 2310 Principles of Programming (Java) Jyoti Islam

COMP Foundations of Programming

Chris Riesbeck, Fall Introduction to Computer Systems

ECE 3574: Applied Software Design

CSE 333 Lecture 1 - Systems programming

EE3315 Internet Technology EE3315 Internet Technology Overview Slide 1

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department

Del Mar College Master Course Syllabus. UNIX System Administration Course Number: ITSC1358

CARTO UNIVERSITY GROUP. Syllabus GEO 445/545 Computer-assisted Cartography Winter December 18, 2013

Object-Oriented Programming for Managers

Menu. Class 1: Introduction. Staff. Course Structure and Expectations. Contacting Us. Contacting You

CS 102 Lecture 1. Syllabus, history, intro

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Fall 2017

Operating Systems, Spring 2015 Course Syllabus

Course Administration

CSC209. Software Tools and Systems Programming.

Welcome to CS 241 Systems Programming at Illinois

IS 331-Fall 2017 Database Design, Management and Applications

CSC 111 Introduction to Computer Science (Section C)

CS313T ADVANCED PROGRAMMING LANGUAGE

Introduction to Computer Systems

CS 241 Data Organization. August 21, 2018

EL2310 Scientific Programming

COMP Foundations of Programming

Introduction to Computer Systems

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

Introduction (1) COMP 520: Compiler Design (4 credits) Alexander Krolik MWF 13:30-14:30, MD 279

CSE 333 Lecture 1 - Systems programming

CISC 3130 Data Structures Spring 2018

COMP-202C: Foundations of Programming

Welcome to Solving Problems with Computers I

CMPE/SE 135 Object-Oriented Analysis and Design

COSE212: Programming Languages. Lecture 0 Course Overview

The Linux Command Line: A Complete Introduction, 1 st ed., by William E. Shotts, Jr., No Starch Press, 2012.

Outline. Intro. Week 1, Fri Jan 4. What is CG used for? What is Computer Graphics? University of British Columbia CPSC 314 Computer Graphics Jan 2013

Intro. Week 1, Fri Jan 4

Introduction to Programming System Design CSCI 455x (4 Units)

What to Expect from Honors Course

Syllabus of ENPM 691: Secure Programming in C

CSci Introduction to Operating Systems. Administrivia, Intro

Syllabus COSC-051-x - Computer Science I Fall Office Hours: Daily hours will be entered on Course calendar (or by appointment)

CSE 114, Computer Science 1 Course Information. Spring 2017 Stony Brook University Instructor: Dr. Paul Fodor

:11 PM. This course will have a significant project component. Lecture time will be used primarily for:

Welcome (back) to CS1007!

ESET 369 Embedded Systems Software, Spring 2018

CS 211 Programming I for Engineers

F17 Modern Version Control with Git. Aaron Perley

Microprocessor. Dr. Rabie A. Ramadan. Al-Azhar University Lecture 1

(0) introduction to the course. how to learn a programming language. (0) course structure

Lab 1: Dynamic Memory: Heap Manager

CSCI455: Introduction to Programming System Design

32549/31242 Advanced Internet Programming

Transcription:

General Course Information Practical Programming Methodology (CMPUT-2) Lecture Michael Buro Introduction to the course Computer architecture Section home page: www.cs.ualberta.ca/ mburo/courses/2 news, schedule, lecture notes, and additional material Course news group: ualberta.courses.cmput.2 You can ask general 2 questions here My E-mail: mburo@cs.ualberta.ca Office: Athabasca Hall 3-37 Office Hours: Wednesdays 2-2:3pm or by appointment Lecture : Introduction / 8 Course Work Lecture : Introduction 2 / 8 Lectures Assignments (weekly) 33% Midterm exam (Feb. 6) 2% 2 Labs (Lab exam in week ) % Final exam (TBA) 36% Average weekly workload you can expect: 5h Lectures + 3h Lab + -3h Assignment = 9 h Attending is essential! Notes will be posted on course webpage after lectures Lecture notes of the W25 course are available Differences: more emphasis on UNIX, tools, and C less on advanced C++ features Final grades: 4-point scale, distribution method Lecture : Introduction 3 / 8 Lecture : Introduction 4 / 8

Assignments Crucial: Deepen the understanding of lecture material! 5 7 small-medium problems/programming exercises each Released weekly on Tuesdays Solutions have to be handed in by the following Tuesday 2:3p in class and/or electronically using the astep system Will be marked by TAs and discussed in the labs a week later Solving assignments problems individually is the best way to learn! Exam questions will be similar Lecture : Introduction 5 / 8 Collaboration and Cheating Policy Labs Important! TAs present assignment solutions Mini-tutorials given by TAs Unmarked hands-on exercises, TAs help Lab exam in week will test your ability to write and debug C/C++ code Apply for UNIX account in CSC-43 this week Labs start next week Exams and assignments will also cover lab material Lecture : Introduction 6 / 8 Software Engineering Courses Discussing assignments among students is allowed! Programming is a team endeavour after all! Students must submit individual solutions and be able to explain their solutions. All sources including books, webpages, and names of fellow students who took part in assignment discussions need to be stated. Failure to do so constitutes plagiarism We use various plagiarism detection tools to compare submitted assignment solutions 2: Small-scale programming learn about UNIX/C/C++ and software libraries get familiar with software development tools know what goes on under the hood design and implement interfaces and small programs learn to appreciate software testing and defensive programming 3: Team work, object-oriented design 4: Large-scale programming Lecture : Introduction 7 / 8 Lecture : Introduction 8 / 8

CMPUT-2 Topics The UNIX operating system, tools [.5 weeks] computer architecture, file system, commands shell, text editor, customizations 2 Procedural Programming (C/C++) [5.5 weeks] simple types, flow control, functions arrays, pointers, structs, memory management compiler, makefiles, debugger, profiler 3 Object Oriented Programming (C++) [3 weeks] classes, operator overloading inheritance 4 Generic Programming (C++) [2.5 weeks] templates Standard Template Library (STL) How to succeed in CMPUT-2? Learning by doing Don t hesitate to play around it s hard to do any permanent damage if you create backups or use a version control system Write small programs to test new concepts Learn to find answers for yourself Textbooks man and web pages Google compiler error messages Learn to use a debugger Lecture : Introduction 9 / 8 How to fail/drown in CMPUT-2? Lecture : Introduction / 8 Typical PC Mainboard Skipping lectures or labs Ignoring assignments or copying fellow students solutions Not taking advantage of asking questions in labs Starting with programming prior to thinking about the problem and trying to make programs work by applying random changes Wasting considerable time by not learning how to use a debugger Lecture : Introduction / 8 Lecture : Introduction 2 / 8

Schematic Design of a Personal Computer Central Processing Unit (CPU) ROM CPU = Central Processing Unit ROM = Read-Only Memory RAM = Random Access Memory Lecture : Introduction 3 / 8 von Neumann Architecture Lecture : Introduction 4 / 8 Software/Hardware Layers CPU Register File ALU R R... Rn Program Counter PC 2 93 239 92 42 235 3 Data Memory (sequence of bytes) LD, R R := R + ST R, JMP 3 Machine Program (Assembly Language) CMPUT2 CMPUT379 CMPUT229 User Programs Libraries Operating System CPUs Devices Memory 3 Lecture : Introduction 5 / 8 Lecture : Introduction 6 / 8

Part : The UNIX Operating System, Shell, Editor Why UNIX? Open standards (e.g. POSIX threads) Dominant server operating system Free versions available (FreeBSD, OpenBSD, Linux) Many free software development tools: gcc, emacs, gmake, gprof, gdb, kdevelop, etc. Multi-tasking (multiple programs can run at the same time) / multi-user (multiple users can work on one machine) operating system We will be using GNU/Linux in the labs GNU/Linux I highly recommend to administer your own Linux system at home. There are many freely downloadable distributions. E.g. Redhat Fedora Core www.redhat.com/fedora Frequent updates. Stable. Requires one or two partitions on your harddisk. Knoppix live CD/DVD www.knopper.net/knoppix/index-en.html Does not require any changes in your setup! Great for checking Linux out. Lecture : UNIX 7 / 8 Lecture : UNIX 8 / 8