ECE 3574: Applied Software Design

Similar documents
Introduction to Computer Systems

Advanced Programming CMPS 109

Welcome. Orientation to online CPS102 Computer Science 2 (Java 2)

Introduction to Computer Systems

While waiting for the lecture to begin, please complete. the initial course questionnaire.

Course Administration

Syllabus of ENPM 691: Secure Programming in C

San José State University Computer Science Department CS49J, Section 3, Programming in Java, Fall 2015

Object-Oriented Programming CSCI-UA

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

CPSC 2380 Data Structures and Algorithms

CS503 Advanced Programming I CS305 Computer Algorithms I

Spring 2018 El Camino College E. Ambrosio. Course Syllabus

CSCI 201L Syllabus Principles of Software Development Spring 2018

CSCI455: Introduction to Programming System Design

Programming 2. Outline (112) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

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

CS 375 UNIX System Programming Spring 2014 Syllabus

Compilers for Modern Architectures Course Syllabus, Spring 2015

CSE 504: Compiler Design

Cleveland State University

CS 240 Fall 2015 Section 004. Alvin Chao, Professor

CSci Introduction to Operating Systems. Administrivia, Intro

EECS 482 Introduction to Operating Systems

15-411/ Compiler Design

EECE.2160: ECE Application Programming Spring 2017

Announcements. 1. Forms to return today after class:

CMPE 180A Data Structures and Algorithms in C++

CMSC 132: Object-Oriented Programming II. Administrivia

Data Structures and Algorithms

COMP 321: Introduction to Computer Systems

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

AE Computer Programming for Aerospace Engineers

INFSCI 1017 Implementation of Information Systems Spring 2017

CMSC 341. Shawn Lupoli (substituting for Nilanjan Banerjee) UMBC CMSC 341 Intro 1

CS 241 Data Organization using C

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

CMPE 152 Compiler Design

- Knowledge of basic computer architecture and organization, ECE 445

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

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

Welcome to CS 241 Systems Programming at Illinois

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

CSc 2310 Principles of Programming (Java) Jyoti Islam

CS 113: Introduction to

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

ME-635 COMPUTER AIDED DESIGN

Outline. Computer Science 331. Course Information. Assessment. Contact Information Assessment. Introduction to CPSC 331

Syllabus CS 301: Data Structures Spring 2015

CNT 4004: Computer Networks I. Tentative Syllabus

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

CMPE 152 Compiler Design

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

Introduction to Computers & Their Use

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid

Operating Systems, Spring 2015 Course Syllabus

IS Spring 2018 Database Design, Management and Applications

Practical Programming Methodology

Database Systems (INFR10070) Dr Paolo Guagliardo. University of Edinburgh. Fall 2016

Welcome to CS 241 Systems Programming at Illinois

B. Subject-specific skills B1. Problem solving skills: Supply the student with the ability to solve different problems related to the topics

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

Introduction. 1990s. UNSW/NICTA startup OK Labs Timeline. Operating UNSW. John Lions (19 January December 1998)

CS/SE 153 Concepts of Compiler Design

CMPE 152 Compiler Design

Announcements. Course Staff. Course Staff. Lectures 10/19/11. CS/ENGRD 2110 Fall Instructor. Administrative Assistant

COLLEGE OF DUPAGE CIS 2542 Advanced C++ with Data Structure Applications Course Syllabus

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

CS313T ADVANCED PROGRAMMING LANGUAGE

CISC 3130 Data Structures Spring 2018

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

Compiling Techniques

Textbook Charles Petzold, Programming Windows, 5th edition, Microsoft Press. References - other textbooks or materials none

CS/SE 153 Concepts of Compiler Design

During the first 2 weeks of class, all students in the course will take an in-lab programming exam. This is the Exam in Programming Proficiency.

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

Mathematics/Science Department Kirkwood Community College. Course Syllabus. Computer Science CSC142 1/10

ECE Object-Oriented Programming using C++ and Java

CS2013 Course Syllabus Spring 2018 Lecture: Mon/Wed 2:00 P.M. 2:50 P.M. SH C259 Lab: Mon/Wed 2:50 P.M. 4:00 P.M. SH C259

MWF 9:00-9:50AM & 12:00-12:50PM (ET)

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1, 2, and 3, Spring 2018

COMP 250. Lecture 36 MISC. - beyond COMP final exam comments

xviii APPROACH FEATURES

Advanced Programming Concepts. CIS 15 : Spring 2007

CS 326: Operating Systems. Lecture 1

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

Computer Science 1321 Course Syllabus

Survey of Programming Languages Dr. R. M. Siegfried 407 Science (516) (not for homework submission)

CT 229. CT229 Lecture Notes. Labs. Tutorials. Lecture Notes. Programming II CT229. Objectives for CT229. IT Department NUI Galway

IS 331-Fall 2017 Database Design, Management and Applications

Hours: See Canvas staff information for TA hours.

OUTCOMES BASED LEARNING MATRIX

New Undergraduate Course Proposal Form

SSE3044: Operating Systems

Operating Systems (ECS 150) Spring 2011

COSC 115A: Introduction to Web Authoring Fall 2014

Programming 1. Outline (111) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

THE UNIVERSITY OF TEXAS AT AUSTIN MIS373 e-discovery and Digital Forensics SPRING 2015 Unique#: (03883) VERSION: 1/23/2015

INF 315E Introduction to Databases School of Information Fall 2015

Transcription:

ECE 3574: Applied Software Design Chris Wyatt Spring 2018

Welcome to ECE 3574: Applied Software Design CRN 19016 Website: https://filebox.ece.vt.edu/~ece3574 Instructor: Chris Wyatt, clwyatt@vt.edu Today s Schedule: Description of the course Administrative details Expectations Course Tools Setup

Communication Course Website: https://filebox.ece.vt.edu/~ece3574 syllabus, schedule, notes, etc. primary way materials are distributed. GitHub: https://github.com distribute starter code demonstrate progress share code with instructors/tas how you submit your assignments Canvas: https://vt.instructure.com grades posted Piazza: https://piazza.com/ use it to ask (and answer) questions forum/wiki like software for QA, polls, announcements replaces email listserv, but has a configurable email digest

Course Objectives Having successfully completed this course, you should be able to: Use software design patterns and application programming interface (API) specifications to implement efficient and portable software. Design and implement multi-threaded and multi-process applications that rely on standardized inter-process communication and synchronization mechanisms. Design and implement complex software applications based on portable software frameworks and event-driven programming. Design, implement, and perform testing strategies including unit and integration testing.

Course Topics We will be covering the following core topics. Generics and containers Inheritance and polymorphism Unit and integration testing Design patterns Using class-based software libraries Event-driven programming Concurrency: processes and threads Communication using shared memory and messages

Prerequisites ECE 2574 Data Structures and Algorithms. You are expected to be competent in the basics of programming with C++ and the use of data structures and algorithms to solve problems. It is helpful to be familiar with Unix systems (e.g. taken 2524) but it is not considered a prerequisite.

Text and Resources Readings will be assigned from the following books. They can be read online through the library, although there is limited access, or you can purchase your own (both are very good and offer solid, practical advice on programming). There will also be assigned readings from various online sources. Clean Code, Robert C. Martin, Prentice Hall 2009 The Pragmatic Programmer, Andrew Hunt and David Thomas, Addison-Wesley, 2000 Additional Resources Pro Git book https://git-scm.com/book/en/v2 CMake Tutorial http://www.cmake.org/cmake-tutorial/ C++ Reference http://en.cppreference.com/w/ QT Documentation http://doc.qt.io

Software A modern C++ compiler with sufficient C++11 support is required. Only specified compiler extensions and libraries may be used. We will use the open source CMake application for managing the build process (see www.cmake.org) and the git source code management tool (see git-scm.com). Recommended Compilers: GCC >= 4.8 Clang >= 3.5 VC++ >= 19 (e.g. Visual Studio 2015 or 2017)

Development Environments For development you can use your favorite editor and a command console to invoke the compiler toolchain, or you can use any integrated development environment (IDE) supported by CMake, including Visual Studio on Windows and XCode on the Mac. There are several other options including QT Creator and CLion. Use whatever works for you but note each project will define a reference environment using a virtual machine that, for grading purposes, is the final arbiter of working code. Whatever environment you choose, you should be adept at using it to write and debug code.

Grading and Honor Code Coursework consists of in-class exercises, project milestones, and a final exam. The grades will be computed as follows: Exercises: 10% Project: 75% Final Exam: 15% All graded work, other than the in-class exercises, is expected to be the original work of the individual student. Copying of specific assignment program-code is an honor code violation. I do use a code comparison system.

Exercises The exercises are worked through in-class after a short lecture on the material for that day, and are due by midnight the day of class.

Project The project is divided into milestones with requirements that correspond to the material covered to that point in the course. These milestones have explicit due dates. The total project grade is distributed across these milestones approximately 20% each. No project work will be accepted past the due date.

Prior Expectations You are expected to understand basic computer organization and C++ syntax from ECE 1574 Types, including references and pointers How to write and call a function, passing arguments and returning values How to write and use a basic class How to read and write files, including parsing techniques How to do proper memory allocation and handling

Prior Expectations You are expected to understand selection and use of common data structures and algorithms from ECE 2574 Array-based and Link-based lists, stacks, queues, deques, and priority queues Tree and Hash Table based dictionaries Algorithms and used for sorting and searching

Prior Expectations You are expected to be able to write, compile, and debug C++ code using good engineering practices. Perform the mechanics of compiling a program Understand how to read and correct compile-time errors Understand runtime-errors and how to identify why they are occurring Use an incremental development technique Have good debugging skills (hypothesis testing) Be able to identify and use appropriate reference material to solve problems

Prior Expectations A Readiness Exercise and Milestone 0 will be used to ascertain your competence in these areas. If you do poorly, you will be asked to meet with me to discuss your preparation.

Tips for success Here are the tips I have for doing well in the course. Attend class and do the exercises Start projects early and ask questions as soon as you have them Attend office hours and recitations. If you can t make these then contact me to setup one-off meetings. Find a peer or peers to work with (just take care with the honor code) Ultimately however if you cannot consistently devote 12-15 hours per week on the course it is unlikely you will do well.

Milestone 0 https://filebox.ece.vt.edu/~ece3574/projects/mileston0.html The goal of this first milestone is to get used to the course workflow and be sure you understand how to submit code for grading. You will write a lexer for our simulator Due 2/5 by 11:59 pm

Questions?

Exercise 01: Setup See Website.

Next Actions Take the Readiness Exercise Make sure you complete today s Exercise 01. Read Chapter 1 and 2 of the Pro Git Book (you can skip sections 1.2 and 1.5) Start on Milestone 0 (at least read the description and related material)