MPATE-GE 2618: C Programming for Music Technology. Syllabus

Similar documents
C Programming. Course Outline. C Programming. Code: MBD101. Duration: 10 Hours. Prerequisites:

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

CSCI 171 Chapter Outlines

ENEE 150: Intermediate Programming Concepts for Engineers Spring 2018 Handout #27. Midterm #2 Review

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

Computer Science 50 Introduction to Computer Science I. Week 0

QUIZ How do we implement run-time constants and. compile-time constants inside classes?

Computer Science II Lecture 1 Introduction and Background

CS 241 Data Organization using C

Quiz 0 Review Session. October 13th, 2014

CNG 140 C Programming. Syllabus. Course Info Fall Semester. Catalog Description

C & Data Structures syllabus

KLiC C Programming. (KLiC Certificate in C Programming)

The Waite Group's. New. Primer Plus. Second Edition. Mitchell Waite and Stephen Prata SAMS


Borland 105, 278, 361, 1135 Bounded array Branch instruction 7 break statement 170 BTree 873 Building a project 117 Built in data types 126

Practical C++ Programming

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and

Kurt Schmidt. October 30, 2018

Pace University. Fundamental Concepts of CS121 1

ECEN 449 Microprocessor System Design. Review of C Programming

Contents of Lecture 3

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. Overview. Objectives. Teaching Tips. Quick Quizzes. Class Discussion Topics

Lectures 5-6: Introduction to C

Introduction to Programming using C++

Lectures 5-6: Introduction to C

Today s Learning Objectives

HUDSON VALLEY COMMUNITY COLLEGE TROY, NEW YORK COURSE OUTLINE

The University of Aizu School of Computer Science and Engineering Introduction to Programming. Course Syllabus (Special Track for Foreign Students)

Advanced C Programming and Introduction to Data Structures

Introduction to Programming Using Java (98-388)

Lecture 03 Bits, Bytes and Data Types

Full file at

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

BLM2031 Structured Programming. Zeyneb KURT

Euclid s algorithm, 133

CS241 Computer Organization Spring Data Alignment

Laboratory 2: Programming Basics and Variables. Lecture notes: 1. A quick review of hello_comment.c 2. Some useful information

ITT Technical Institute. ET2560T Introduction to C Programming Onsite and Online Course SYLLABUS

Aryan College. Fundamental of C Programming. Unit I: Q1. What will be the value of the following expression? (2017) A + 9

Course Outline. TERM EFFECTIVE: Spring 2016 CURRICULUM APPROVAL DATE: 10/12/2015

C Programming SYLLABUS COVERAGE SYLLABUS IN DETAILS

SAURASHTRA UNIVERSITY

CS503 Advanced Programming I CS305 Computer Algorithms I

Course Title: C Programming Full Marks: Course no: CSC110 Pass Marks: Nature of course: Theory + Lab Credit hours: 3

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016

Exam 1 Prep. Dr. Demetrios Glinos University of Central Florida. COP3330 Object Oriented Programming

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

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

About this exam review

CHAPTER 1 Introduction to Computers and Programming CHAPTER 2 Introduction to C++ ( Hexadecimal 0xF4 and Octal literals 031) cout Object

PRINCIPLES OF OPERATING SYSTEMS

Short Notes of CS201

TDDB68 Concurrent Programming and Operating Systems. Lecture 2: Introduction to C programming

COMP322 - Introduction to C++ Lecture 01 - Introduction

Review: Exam 1. Your First C++ Program. Declaration Statements. Tells the compiler. Examples of declaration statements

ECEN 449 Microprocessor System Design. Review of C Programming. Texas A&M University

Contents. A Review of C language. Visual C Visual C++ 6.0

CSI 402 Systems Programming LECTURE 4 FILES AND FILE OPERATIONS

CS Programming In C

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language

CS201 - Introduction to Programming Glossary By

BIRLA INSTITUTE OF TECHNOLOGY AND SCIENCE, Pilani Pilani Campus Instruction Division. SECOND SEMESTER Course Handout Part II

CSCI 136 Data Structures & Advanced Programming. Spring 2018 Instructors Bill Jannen & Jon Park

CS111: PROGRAMMING LANGUAGE II

C programming basics T3-1 -

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

CS110D: PROGRAMMING LANGUAGE I

KLiC C. About. Tools: Turbo C++ Syllabus:

Problem Set 6 Audio Programming Out of 40 points. All parts due at 8pm on Thursday, November 29, 2012

a data type is Types

CPSC 211, Sections : Data Structures and Implementations, Honors Final Exam May 4, 2001

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. A Guide to this Instructor s Manual:

P.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above

CSCI 136 Data Structures & Advanced Programming. Fall 2018 Instructors Bill Lenhart & Bill Jannen

Announcements. 1. Forms to return today after class:

1 P a g e A r y a n C o l l e g e \ B S c _ I T \ C \

Embedded Controller Programming 2

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

Welcome to MCS 360. content expectations. using g++ input and output streams the namespace std. Euclid s algorithm the while and do-while statements

Recap. ANSI C Reserved Words C++ Multimedia Programming Lecture 2. Erwin M. Bakker Joachim Rijsdam

CS 216 Fall 2007 Final Exam Page 1 of 10 Name: ID:

Your Instructor. CSE Content. Notes. Notes. Notes. Summer May 4, 2010

CSCE 206: Structured Programming in C

EMBEDDED SYSTEMS PROGRAMMING Language Basics

Cpt S 122 Data Structures. Course Review Midterm Exam # 1

Programming refresher and intro to C programming

CSCI-1200 Data Structures Fall 2012 Lecture 5 Pointers, Arrays, Pointer Arithmetic

CSC 1600 Memory Layout for Unix Processes"

Professor Peter Cheung EEE, Imperial College

ET156 Introduction to C Programming

Programming Fundamentals (CS 302 ) Dr. Ihsan Ullah. Lecturer Department of Computer Science & IT University of Balochistan

CS201 Some Important Definitions

CMPE-013/L. Introduction to C Programming

Recitation 2/18/2012

Introduction to C. Sean Ogden. Cornell CS 4411, August 30, Geared toward programmers

Outline. 1 About the course

CS 241 Data Organization. August 21, 2018

Recitation #11 Malloc Lab. November 7th, 2017

Transcription:

MPATE-GE 2618: C Programming for Music Technology Instructor Dr. Schuyler Quackenbush schuyler.quackenbush@nyu.edu Lab Teaching Assistant TBD Description Syllabus MPATE-GE 2618: C Programming for Music Technology is an intensive, graduatelevel introductory course in programming concepts and computer science with a focus on software design, algorithms, and data representation for digital signal processing and audio applications. Assignments consist of extensive programming in C. Topics include: C programming: syntax, primitive types, iteration, conditional expressions, functions, arrays, pointers, dynamic memory allocation, standard libraries. Software development: problem decomposition, abstraction, data structures, implementation, debugging, testing. Algorithms: design, specification, and analysis. Data representations for signal processing and audio applications. Introduction to audio APIs Prerequisites No prior programming experience is required. Class Times Lectures (MPATE-GE 2618) meets on Tuesday and Thursday 1:40-2:55 in room TBD of the Education building (35 W. 4th St). Lab (MPATE-GE 2617) meets Thursday 3:30-4:45 in room TBD of the Education building (35 W. 4th St). NOTE: All students enrolled in MPATE-GE 2618 must also take MPATE-GE 2617. Office Hours Weekly office hours will be in the time between the Thursday lecture and the lab. Location TBD by student and instructor. Class Materials All class materials are available at the NYU Classes course website: - 1 of 8 -

Resources o Lecture slides as PDF o Any other course material Assignments o Problem description and any associated source code and data o Final project information Problem Sets Problem sets will be distributed via NYU Classes Assignments. Each will have a posted due data. Students should post completed assignments via the same NYU Classes Assignment mechanism. Quizzes The course will have at least one quiz. The quiz will be "closed-book." However, you may utilize during each quiz one two-sided page (8.5" 11") of notes, typed or written, but nothing else. Final Project The final project will be your opportunity to put your programming skills to use and implement your own software application. As long as your project is written in C, the nature of your project is entirely up to you, albeit subject to the instructor's approval. You are welcome to utilize external libraries and hardware provided that the instructor has access to all of these things and you are able to present it in class at the end of the semester. Final projects include a written report, the actual program code, and a presentation to the class. Students in the music technology program are encouraged to choose a project topics that involve processing of audio signals, including real-time audio I/O. Final Exam The course does not have a final exam. Grades Final grades for the lecture class and lab will be determined using the following weights: Problem Sets: 70% Quizzes: 10% Final Project: 20% The instructor will post grades for each assignment, quiz and final project on the NYU Classes Gradebook. Books Required text: - 2 of 8 -

Programming in C, Fourth Edition by Stephen Kochan Optional text for students less comfortable with programming: Absolute Beginner's Guide to C, Second Edition by Greg Perry Optional recommended audio programming text: The Audio Programming Book, R. Boulanger and V. Lazzarini (Eds.) Platforms Assignments are designed to be implemented on a UNIX-based system such as Mac OS X or Cygwin on Windows. Course Outline Introduction o Book o Problem sets, Final project and Lab o Course grading o About instructor Programming problem statement o Algorithms Terminal o Bash commands o History of Unix o Directories o Unix $PATH o Redirection and pipes Compiler, Assembler, Machine code Basic C program o Hello world o Comments in code o Code structure Binary numbers o 2s complement signed integer o ASCII for characters o float, double Versions of C o ANSI o C99 C is Strongly typed language Statement syntax Variables o char, int, short, long, long long, float, double o variable - 3 of 8 -

declaration assignment o Expressions Integer division Promotion cast o Unsigned o Bool o #define for defining constants o typedef typedef unsigned int counter Operators o Arithmetic Precedence Cast Promotion in expression evaluation o ++, += and other variants o Relational o Boolean o Logical o Bit operations Flow of execution o Conditional If else? : switch o Looping For Break While Do while o Style Brace position (K&R or Microsoft) o Conditional switch? : Logical operators Arrays o Integer Declaration Initialization - 4 of 8 -

o Array access and assignment A[i] Indexed from zero off-end access or assignment o Character Null terminated String functions ( n variant) Functions o Args Call by value (is the default) Call by reference o Return values Int, double Char * (example of status strings ); o Function prototypes When do you need them within a single file *.h in multiple files o Variable scope Local automatic (on stack) Within {} scope e.g. for (int i=0; ) loop Global (in heap) static Command line arguments and main() o Parsing command line Pointer to string o Useful functions atoi, atof, o #define and enum {} o Array of strings Const modifier, e.g. for message strings Command line processing o Designating options o Processing of optional arguments o Qualifying arguments File I/O o Fopen o Fclose o Character I/O ASCII fscanf, fprintf getc, putc o File I/O Binary fread/fwrite - 5 of 8 -

o Function to read a line of text Enum, const, typedef Pre-processor o #if () #else #endif Structures o Example: Student o Accessing structures Direct Pointer to struct o Typedef and structures Example o Arrays of structures Pointers o Arguments to functions o Arrays Index Pointer Pointer offset and pointer arithmetic o Pointers to structures o Pointers to functions Bit operators o Bit operators and, or shift o Bit test Characters o Characters o Strings Using random numbers o Numerical integration Recursion o Base case o Recursive call o Example programs Memory allocation o Why: when array size is unknown at compile time Read in a wav file o Malloc, calloc and Free o Multi-dimensonal arrays o Arrays of structures o Memory leaks malloc() without free() - 6 of 8 -

Memory usage o Virtual memory o Pages o Protection o Caching o Calling and Stack frame o Variables Global Automatic local Static local Computational efficiency o Big O o Linear Log, Polynomial, Exponential DFT, FFT Searching algorithms o Linear o Binary o Hash Hash tables o For searching Sorting: quicksort overview Multi-file programs Linked lists o Alternative to arrays o Grow o Re-order o Singlely and doubly linked lists Binary Trees o Data representation o Huffman code Search o Exhaustive o Greedy Example problems o Traveling Salesman o Shortest Path o 0-1 Packpack Convolution o Time Domain o Frequency Domain Examples o Reverberation Using Libraries - 7 of 8 -

Real-Time operation o latency Multi-threaded code o Callbacks PortAudio LibSndFile o Open, Read, Write, Seek, Close NCurses o Non-blocking keyboard input o Non-tty output OpenGL o Graphics window o Plot waveform o Plot Spectrum C++ Classes o scoped data and member functions - 8 of 8 -