CS107 Handout 26 Spring 2007 May 9, 2007 CS107 Midterm Exam

Size: px
Start display at page:

Download "CS107 Handout 26 Spring 2007 May 9, 2007 CS107 Midterm Exam"

Transcription

1 CS107 Handout 26 Spring 2007 May 9, 2007 CS107 Midterm Exam This is an open-note exam. You can refer to any course handouts, handwritten lecture notes, and printouts of any code relevant to a CS107 assignment. You may not use any laptops, cell phones, or handheld devices of any sort. Those taking the exam remotely should phone in if they have questions. Once you re done, fax the exam to Stanford, but hold on to the original until you get the graded fax copy back. Cell phone is , and fax number is Good luck! leland username: Last Name: First Name: I accept the letter and spirit of the honor code. I ve neither given nor received aid on this exam. I promise to write as neatly as possible. (signed) Score Grader 1. Color Theory (15) 2. Packing Packets (15) 3. Python (15) Total (15)

2 vector.h typedef int (*VectorCompareFunction)(const void *elemaddr1, const void *elemaddr2); typedef void (*VectorMapFunction)(void *elemaddr, void *auxdata); typedef void (*VectorFreeFunction)(void *elemaddr); typedef struct { // implementation specific } vector; void VectorNew(vector *v, int elemsize, VectorFreeFunction freefn, int initialallocation); void VectorDispose(vector *v); int VectorLength(vector *v); void *VectorNth(vector *v, int position); void VectorInsert(vector *v, const void *elemaddr, int position); void VectorAppend(vector *v, const void *elemaddr); void VectorReplace(vector *v, const void *elemaddr, int position); void VectorDelete(vector *v, int position); int VectorSearch(vector *v, const void *key, VectorCompareFunction searchfn, int startindex, bool issorted); void VectorSort(vector *v, VectorCompareFunction comparefn); void VectorMap(vector *v, VectorMapFunction mapfn, void *auxdata); hashset.h typedef int (*HashSetHashFunction)(const void *elemaddr, int numbuckets); typedef int (*HashSetCompareFunction)(const void *elemaddr1, const void *elemaddr2); typedef void (*HashSetMapFunction)(void *elemaddr, void *auxdata); typedef void (*HashSetFreeFunction)(void *elemaddr); typedef struct { // implementation specific } hashset; void HashSetNew(hashset *h, int elemsize, int numbuckets, HashSetHashFunction hashfn, HashSetCompareFunction comparefn, HashSetFreeFunction freefn); void HashSetDispose(hashset *h); int HashSetCount(hashset *h); void HashSetEnter(hashset *h, const void *elemaddr); void *HashSetLookup(hashset *h, const void *elemaddr); void HashSetMap(hashset *h, HashSetMapFunction mapfn, void *auxdata); 2 tear me out

3 3 Problem 1: Color Theory (15 points; 5, 5, and 5) Consider the following struct definitions: typedef struct palette { short *lavender; char indigo[4]; struct palette *peach[2]; } palette; line 1 line 2 line 3 static palette **swatch(palette *ecru, int mint); static int colorwheel(palette ruby, int seafoam) { seafoam = ruby.lavender[ruby.indigo[3]]; ruby.peach[0] += ((palette *)ruby.indigo)->lavender[2]; return swatch(&ruby, 8) - ruby.peach; } Generate code for the entire colorwheel function. Be clear about what assembly code corresponds to what line. You have this and the next two pages for your work.

4 Problem 1 Continued 4

5 Problem 1 Continued 5

6 6 Problem 2: packpackets (15 points) You re to write code that traverses a linked list of custom nodes and builds a dynamically allocated array of bytes large enough to store the meaningful data held by the linked list. Each node stores one or more packets of raw information, where each packet is preceded by a two-byte short stating the length (in bytes) of the packet that follows it. The end of the packet sequence is marked by a two-byte zero, and the four bytes after that store the address of the next node in the list (or NULL, if the node is the last in the list). The following node contains three packets of length 20, 10, and 30 bytes, in that order. The number of bytes making up the entire node is You re to write a function called packpackets that, given the address of the first node in such a list, builds a dynamically allocated byte array where all packets in the linked list are replicated verbatim, one after another, in the same order they appear in the list. So, given the following list: NULL your packpackets function would return the address of the first byte of this dynamically allocated figure: Here are some constraints I m imposing on your implementation. The address passed to packpackets is the address of the first short storing the number of bytes making up the first packet in the first node. Each node alternates between shorts and packets. A two-byte zero marks the end of the packet sequence in any given node. Every node ends with a four-byte pointer identifying the location of the next node in the list. You should implement this function iteratively, and your algorithm should accomplish everything in exactly one traversal. This requires you to call realloc for each packet you encounter during your one traversal. [Tip: When NULL is passed as the first argument to realloc, realloc just calls malloc on your behalf.] This artificial constraint is being imposed so that I can test your understanding of realloc. For simplicity, you may assume the list contains at least one node, and that each node contains at least one packet. You needn t worry about any alignment restrictions at all. You shouldn t free or modify the original list in any way. Use the next page for your implementation. Feel free to tear this page out.

7 7 Problem 2 Continued /** * Function: packpackets * * Builds a contiguous array version of the packet list structure according * to the explanations provided on the prior page. The parameter passed * is of type short *, because the first meaningful piece of information * stored in the list is a two-byte short. The return value is of type * void *, because the implementation has no type information about the * packet data. */ void *packpackets(short *list) {

8 Problem 2 Continued 8

9 9 Problem 3: Python (15 points) Python provides support for objects just like C++ and Java do, but its implementation model is different. Rather than requiring that all fields be stated at compile time, Python allows its objects to take on new fields as the code executes. Here s how a Python object might grow to represent a Stanford student: student = {} # initialized to be an empty object student['name'] = 'Edward Requenez' student['numunits'] = 15 student['gpa'] = student['friends'] = ['Bill','Will','Sawyer','Alex','Daniel'] student['hometown'] = {} # initialized to be an empty object student['hometown']['city'] = 'Dallas' student['hometown']['state'] = 'Texas' student['hometown']['zip'] = You don t need to know Python to know what the code s trying to do. The coder decided to model some Stanford student as a Python object with five properties. Each accommodates a value of a different data type. Python doesn t require that object structure be stated up front. We re going to assume that all Python values whether they re top-level primitives or fields within an aggregate record, are implemented in terms of the following pure C enum and struct definitions: typedef enum { Integer, Float, String, Array, Object } PythonType; typedef struct { const char *id; PythonType type; char value[4]; } PythonPair; Don t be misled PythonPair's third field. It looks like it stores a small number of characters, but it actually sits there as a general-purpose four-byte register of sorts. We ve done enough C casting and reinterpretation of bit patterns to know how to exploit that little value array for all it s worth. Sometimes we used those four bytes to store an integer, as with: numdalmations = 101 For other primitives, we use the four bytes to store something else: pi = ; contestant = 'Sanjaya Malakar' The value array contains the bit pattern of either a four-byte integer, a four-byte float or a four-byte pointer to a null-terminated char array. We rely on the type field to figure out what those four bytes are storing Sanjaya Malakar\0 Integer Float String numdalmations\0 pi\0 contestant\0

10 And guess what? Python objects and arrays are backed by the infamous hashset and vector types from Assignments 3 and When a field is an array, the value array stores the address of a vector of PythonPairs, where the id fields just store NULL as a sentinel that neither the id fields nor the colons need to be printed. When a field is an inner object, value stores the address of a hashset. The hashset is the in-memory representation of a Python object that s been built up to include an arbitrarily large number of properties. Those properties are stored as PythonPairs in a hashset, and provided you allow for some of those PythonPairss to store vector *s and hashset *s, you have the means to recursively build Python objects with primitives, Python arrays, and Python objects as fields. Given the address of a hashset of PythonPairss, you re going to write a function called serializeobject that synthesizes the C string representation of the entire object, just like Python would. Primitives are serialized as you d expect, though all strings constants are delimited by single quotes. Arrays are square-bracket-delimited, comma-separated lists. The student object from above looks like this: {'name':'ed Requenez','numUnits':15,'gpa':3.966, 'friends':['bill','will','sawyer','alex','daniel',], 'hometown':{'city':'dallas','state':'texas','zipcode':75209,},} A full object s serialization is delimited by curly braces. Between those curly braces is a comma-separated list of id/value pairs. The identifiers are always strings with singe quotes. Each value gets published either as the primitive it is, or recursively as the array or sub-object it s addressing. The identifiers are separated from their values by colons, there s no intervening white space, and it s fine to have a trailing comma after the last entry within an array of object serialization. This is a difficult question that necessarily uses HashSetMap. And because HashSetMapFunction and VectorMapFunction have the same prototype, it makes sense use VectorMap to serialize Python arrays. You may assume the existence of convenience functions called intcpy and floatcpy, which operate much like strcpy, in that they place '\0'-terminated C strings in the specified buffer. In this case the strings they place are the textual equivalents of integers and floats. void intcpy(char *dest, int value); // does not allocate memory void floatcpy(char *dest, float value); // does not allocate memory Use the space provided on the next three pages for your implementation. You re more than encouraged to decompose your solution. Don t orphan any memory. For simplicity, you may assume that the full serialization is less than 8192 characters (a nice power of 2), but the dynamically allocated string that s ultimately returned must use only as much memory as is absolutely necessary to store the serialization.

11 11 Problem 3 Continued /** * Function: serializeobject * * Traverses the hashset representation of a Python object and * synthesizes a single, dynamically allocated C string storing the * textual representation of the entire object. */ char *serializeobject(hashset *object) {

12 Problem 3 Continued 12

13 Problem 3 Continued 13

Spring 2007 May 16, 2007 CS107 Midterm Solution

Spring 2007 May 16, 2007 CS107 Midterm Solution CS107 Handout 26S Spring 2007 May 16, 2007 CS107 Midterm Solution Problem 1: Color Theory (15 points: ) Consider the following struct definitions: typedef struct palette short *lavender; char indigo[4];

More information

CS107 Handout 43 Spring 2007 June 8 th, 2007 CS107 Final Exam

CS107 Handout 43 Spring 2007 June 8 th, 2007 CS107 Final Exam CS107 Handout 43 Spring 2007 June 8 th, 2007 CS107 Final Exam This is an open-note exam. You can refer to any course handouts, handwritten lecture notes, and printouts of any code relevant to a CS107 assignment.

More information

Spring 2008 May 14 th, 2008 CS107 Midterm Solution

Spring 2008 May 14 th, 2008 CS107 Midterm Solution CS107 Handout 25S Spring 2008 May 14 th, 2008 CS107 Midterm Solution Problem 1: Your Friendly Green Grocer (15 points: 5, 4, and 6) Consider the following struct definitions: line 1 line 2 line 3 typedef

More information

CS106X Handout 35 Winter 2018 March 12 th, 2018 CS106X Midterm Examination

CS106X Handout 35 Winter 2018 March 12 th, 2018 CS106X Midterm Examination CS106X Handout 35 Winter 2018 March 12 th, 2018 CS106X Midterm Examination This is an open-book, open-note, closed-electronic-device exam. You needn t write #includes, and you may (and you re even encouraged

More information

Kurt Schmidt. October 30, 2018

Kurt Schmidt. October 30, 2018 to Structs Dept. of Computer Science, Drexel University October 30, 2018 Array Objectives to Structs Intended audience: Student who has working knowledge of Python To gain some experience with a statically-typed

More information

CS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays

CS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays CS107 Handout 08 Spring 2007 April 9, 2007 The Ins and Outs of C Arrays C Arrays This handout was written by Nick Parlante and Julie Zelenski. As you recall, a C array is formed by laying out all the elements

More information

CS106X Handout 39 Autumn 2012 November 28 th, 2012 CS106X Midterm Examination II

CS106X Handout 39 Autumn 2012 November 28 th, 2012 CS106X Midterm Examination II CS106X Handout 39 Autumn 2012 November 28 th, 2012 CS106X Midterm Examination II This is closed book, closed notes, closed reader, closed everything exam. If you re taking the exam remotely, you can telephone

More information

Winter 2017 March 2, 2017 CS107 2 nd Midterm Examination

Winter 2017 March 2, 2017 CS107 2 nd Midterm Examination CS107 Cynthia Lee Winter 2017 March 2, 2017 CS107 2 nd Midterm Examination This is a closed book, closed note, closed computer exam. You have 90 minutes to complete all problems. You don t need to #include

More information

Short Notes of CS201

Short Notes of CS201 #includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system

More information

CS201 - Introduction to Programming Glossary By

CS201 - Introduction to Programming Glossary By CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with

More information

Dynamic Data Structures. CSCI 112: Programming in C

Dynamic Data Structures. CSCI 112: Programming in C Dynamic Data Structures CSCI 112: Programming in C 1 It s all about flexibility In the programs we ve made so far, the compiler knows at compile time exactly how much memory to allocate for each variable

More information

CS201- Introduction to Programming Latest Solved Mcqs from Midterm Papers May 07,2011. MIDTERM EXAMINATION Spring 2010

CS201- Introduction to Programming Latest Solved Mcqs from Midterm Papers May 07,2011. MIDTERM EXAMINATION Spring 2010 CS201- Introduction to Programming Latest Solved Mcqs from Midterm Papers May 07,2011 Lectures 1-22 Moaaz Siddiq Asad Ali Latest Mcqs MIDTERM EXAMINATION Spring 2010 Question No: 1 ( Marks: 1 ) - Please

More information

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

MPATE-GE 2618: C Programming for Music Technology. Syllabus 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

More information

Winter 2018 March 12 th, 2018 CS106X Midterm Examination Solution

Winter 2018 March 12 th, 2018 CS106X Midterm Examination Solution CS106X Handout 35S Winter 2018 March 12 th, 2018 CS106X Midterm Examination Solution Once again, your awesome course staff spent the week grading your exams, and I m happy to share that they re graded!

More information

Binghamton University. CS-211 Fall Syntax. What the Compiler needs to understand your program

Binghamton University. CS-211 Fall Syntax. What the Compiler needs to understand your program Syntax What the Compiler needs to understand your program 1 Pre-Processing Any line that starts with # is a pre-processor directive Pre-processor consumes that entire line Possibly replacing it with other

More information

CS106X Handout 24 Winter 2018 February 9 th, 2018 CS106X Midterm Examination

CS106X Handout 24 Winter 2018 February 9 th, 2018 CS106X Midterm Examination CS106X Handout 24 Winter 2018 February 9 th, 2018 CS106X Midterm Examination This is an open-book, open-note, closed-electronic-device exam. You have 80 minutes to complete the exam. If you re taking the

More information

For example, let s say we define an array of char of size six:

For example, let s say we define an array of char of size six: Arrays in C++ An array is a consecutive group of memory locations that all have the same name and the same type. To refer to a particular location, we specify the name and then the positive index into

More information

CS201 Some Important Definitions

CS201 Some Important Definitions CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data

More information

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

Programming Standards: You must conform to good programming/documentation standards. Some specifics: CS3114 (Spring 2011) PROGRAMMING ASSIGNMENT #3 Due Thursday, April 7 @ 11:00 PM for 100 points Early bonus date: Wednesday, April 6 @ 11:00 PM for a 10 point bonus Initial Schedule due Thursday, March

More information

ECE264 Fall 2013 Exam 3, November 20, 2013

ECE264 Fall 2013 Exam 3, November 20, 2013 ECE264 Fall 2013 Exam 3, November 20, 2013 In signing this statement, I hereby certify that the work on this exam is my own and that I have not copied the work of any other student while completing it.

More information

CS 610: Intermediate Programming: C/C++ Making Programs General An Introduction to Linked Lists

CS 610: Intermediate Programming: C/C++ Making Programs General An Introduction to Linked Lists ... 1/17 CS 610: Intermediate Programming: C/C++ Making Programs General An Introduction to Linked Lists Alice E. Fischer Spring 2016 ... 2/17 Outline Generic Functions Command Line Arguments Review for

More information

CS 231 Data Structures and Algorithms, Fall 2016

CS 231 Data Structures and Algorithms, Fall 2016 CS 231 Data Structures and Algorithms, Fall 2016 Dr. Bruce A. Maxwell Department of Computer Science Colby College Course Description Focuses on the common structures used to store data and the standard

More information

Chris and Chris Fall 2016 Nov 3 rd, 2016 CS106B Midterm

Chris and Chris Fall 2016 Nov 3 rd, 2016 CS106B Midterm CS106B Chris and Chris Fall 2016 Nov 3 rd, 2016 CS106B Midterm This is an open-note, open-book exam. You can refer to any course handouts, textbooks, handwritten lecture notes, and printouts of any code

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #43. Multidimensional Arrays

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #43. Multidimensional Arrays Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #43 Multidimensional Arrays In this video will look at multi-dimensional arrays. (Refer Slide Time: 00:03) In

More information

Fundamental of Programming (C)

Fundamental of Programming (C) Borrowed from lecturer notes by Omid Jafarinezhad Fundamental of Programming (C) Lecturer: Vahid Khodabakhshi Lecture 3 Constants, Variables, Data Types, And Operations Department of Computer Engineering

More information

Signature: ECE 551 Midterm Exam

Signature: ECE 551 Midterm Exam Name: ECE 551 Midterm Exam NetID: There are 7 questions, with the point values as shown below. You have 75 minutes with a total of 75 points. Pace yourself accordingly. This exam must be individual work.

More information

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I BASIC COMPUTATION x public static void main(string [] args) Fundamentals of Computer Science I Outline Using Eclipse Data Types Variables Primitive and Class Data Types Expressions Declaration Assignment

More information

CS106B Sprint 2017 April 27 th, 2017 CS106B Practice Midterm (KEY)

CS106B Sprint 2017 April 27 th, 2017 CS106B Practice Midterm (KEY) CS106B Sprint 2017 April 27 th, 2017 CS106B Practice Midterm (KEY) This is an open-note, open-book exam. You can refer to any course handouts, textbooks, handwritten lecture notes, and printouts of any

More information

QUIZ. What is wrong with this code that uses default arguments?

QUIZ. What is wrong with this code that uses default arguments? QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code

More information

CAAM 420 FALL 2012 Lecture 9. Mishael Owoyemi

CAAM 420 FALL 2012 Lecture 9. Mishael Owoyemi CAAM 420 FALL 2012 Lecture 9 Mishael Owoyemi September 21, 2012 Table of Contents 1 Variables 3 1.1 Recap and Introduction.................................. 3 1.1.1 Recap........................................

More information

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find

CS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS

More information

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)

More information

Heap Arrays. Steven R. Bagley

Heap Arrays. Steven R. Bagley Heap Arrays Steven R. Bagley Recap Data is stored in variables Can be accessed by the variable name Or in an array, accessed by name and index a[42] = 35; Variables and arrays have a type int, char, double,

More information

Makefiles Makefiles should begin with a comment section of the following form and with the following information filled in:

Makefiles Makefiles should begin with a comment section of the following form and with the following information filled in: CS 215 Fundamentals of Programming II C++ Programming Style Guideline Most of a programmer's efforts are aimed at the development of correct and efficient programs. But the readability of programs is also

More information

Pointers, Dynamic Data, and Reference Types

Pointers, Dynamic Data, and Reference Types Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple

More information

ECE 551D Spring 2018 Midterm Exam

ECE 551D Spring 2018 Midterm Exam Name: ECE 551D Spring 2018 Midterm Exam NetID: There are 6 questions, with the point values as shown below. You have 75 minutes with a total of 75 points. Pace yourself accordingly. This exam must be individual

More information

Compiling and Running a C Program in Unix

Compiling and Running a C Program in Unix CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 95 ] Compiling and Running a C Program in Unix Simple scenario in which your program is in a single file: Suppose you want to name

More information

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

CSCI-1200 Data Structures Fall 2018 Lecture 5 Pointers, Arrays, & Pointer Arithmetic CSCI-1200 Data Structures Fall 2018 Lecture 5 Pointers, Arrays, & Pointer Arithmetic Announcements: Test 1 Information Test 1 will be held Thursday, Sept 20th, 2018 from 6-7:50pm Students will be randomly

More information

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

CprE 288 Introduction to Embedded Systems Exam 1 Review.  1 CprE 288 Introduction to Embedded Systems Exam 1 Review http://class.ece.iastate.edu/cpre288 1 Overview of Today s Lecture Announcements Exam 1 Review http://class.ece.iastate.edu/cpre288 2 Announcements

More information

Computer Science & Information Technology (CS) Rank under AIR 100. Examination Oriented Theory, Practice Set Key concepts, Analysis & Summary

Computer Science & Information Technology (CS) Rank under AIR 100. Examination Oriented Theory, Practice Set Key concepts, Analysis & Summary GATE- 2016-17 Postal Correspondence 1 C-Programming Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key concepts, Analysis

More information

ECE 264 Exam 2. 6:30-7:30PM, March 9, You must sign here. Otherwise you will receive a 1-point penalty.

ECE 264 Exam 2. 6:30-7:30PM, March 9, You must sign here. Otherwise you will receive a 1-point penalty. ECE 264 Exam 2 6:30-7:30PM, March 9, 2011 I certify that I will not receive nor provide aid to any other student for this exam. Signature: You must sign here. Otherwise you will receive a 1-point penalty.

More information

3/7/2018. Sometimes, Knowing Which Thing is Enough. ECE 220: Computer Systems & Programming. Often Want to Group Data Together Conceptually

3/7/2018. Sometimes, Knowing Which Thing is Enough. ECE 220: Computer Systems & Programming. Often Want to Group Data Together Conceptually University of Illinois at Urbana-Champaign Dept. of Electrical and Computer Engineering ECE 220: Computer Systems & Programming Structured Data in C Sometimes, Knowing Which Thing is Enough In MP6, we

More information

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

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level

More information

CSCI 102L - Data Structures Midterm Exam #2 Spring 2011

CSCI 102L - Data Structures Midterm Exam #2 Spring 2011 CSCI 102L - Data Structures Midterm Exam #2 Spring 2011 (12:30pm - 1:50pm, Thursday, March 24) Instructor: Bill Cheng ( This exam is closed book, closed notes, closed everything. No cheat sheet allowed.

More information

a) Write the signed (two s complement) binary number in decimal: b) Write the unsigned binary number in hexadecimal:

a) Write the signed (two s complement) binary number in decimal: b) Write the unsigned binary number in hexadecimal: CS107 Autumn 2018 CS107 Midterm Practice Problems Cynthia Lee Problem 1: Integer Representation There is a small amount of scratch space between problems for you to write your work, but it is not necessary

More information

Review of the C Programming Language for Principles of Operating Systems

Review of the C Programming Language for Principles of Operating Systems Review of the C Programming Language for Principles of Operating Systems Prof. James L. Frankel Harvard University Version of 7:26 PM 4-Sep-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights

More information

Computer Science 50: Introduction to Computer Science I Harvard College Fall Quiz 0 Solutions. Answers other than the below may be possible.

Computer Science 50: Introduction to Computer Science I Harvard College Fall Quiz 0 Solutions. Answers other than the below may be possible. Quiz 0 Solutions Answers other than the below may be possible. Short Answers. 0. :-) 1. 10111111 + 00000001 11000000 2. For efficiency, characters printed to stdout are buffered until a newline is printed

More information

BBM 201 DATA STRUCTURES

BBM 201 DATA STRUCTURES BBM 201 DATA STRUCTURES Lecture 8: Dynamically Allocated Linked Lists 2017-2018 Fall int x; x = 8; int A[4]; An array is stored as one contiguous block of memory. How can we add a fifth element to the

More information

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces Basic memory model Using functions Writing functions Basics Prototypes Parameters Return types Functions and memory Names and namespaces When a program runs it requires main memory (RAM) space for Program

More information

CS 1301 Exam 1 Fall 2010

CS 1301 Exam 1 Fall 2010 CS 1301 Exam 1 Fall 2010 Name : Grading TA: Integrity: By taking this exam, you pledge that this is your work and you have neither given nor received inappropriate help during the taking of this exam in

More information

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

ENEE 150: Intermediate Programming Concepts for Engineers Spring 2018 Handout #27. Midterm #2 Review ENEE 150: Intermediate Programming Concepts for Engineers Spring 2018 Handout #27 Midterm #2 Review 1 Time and Location The midterm will be given in class during normal class hours, 11:00a.m.-12:15p.m.,

More information

Review of the C Programming Language

Review of the C Programming Language Review of the C Programming Language Prof. James L. Frankel Harvard University Version of 11:55 AM 22-Apr-2018 Copyright 2018, 2016, 2015 James L. Frankel. All rights reserved. Reference Manual for the

More information

CSCE 206: Structured Programming in C++

CSCE 206: Structured Programming in C++ CSCE 206: Structured Programming in C++ 2017 Spring Exam 2 Monday, March 20, 2017 Total - 100 Points B Instructions: Total of 13 pages, including this cover and the last page. Before starting the exam,

More information

Introduction to C++ with content from

Introduction to C++ with content from Introduction to C++ with content from www.cplusplus.com 2 Introduction C++ widely-used general-purpose programming language procedural and object-oriented support strong support created by Bjarne Stroustrup

More information

CS106X Handout 25 Autumn 2012 October 23 rd, 2012 CS106X Midterm Examination

CS106X Handout 25 Autumn 2012 October 23 rd, 2012 CS106X Midterm Examination CS106X Handout 25 Autumn 2012 October 23 rd, 2012 CS106X Midterm Examination This is closed book, closed notes, closed reader, closed everything exam. If you re taking the exam remotely, you can telephone

More information

Creating a String Data Type in C

Creating a String Data Type in C C Programming Creating a String Data Type in C For this assignment, you will use the struct mechanism in C to implement a data type that models a character string: struct _String { char data; dynamically-allocated

More information

Pace University. Fundamental Concepts of CS121 1

Pace University. Fundamental Concepts of CS121 1 Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction

More information

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

Cpt S 122 Data Structures. Course Review Midterm Exam # 1 Cpt S 122 Data Structures Course Review Midterm Exam # 1 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 1 When: Friday (09/28) 12:10-1pm Where:

More information

C mini reference. 5 Binary numbers 12

C mini reference. 5 Binary numbers 12 C mini reference Contents 1 Input/Output: stdio.h 2 1.1 int printf ( const char * format,... );......................... 2 1.2 int scanf ( const char * format,... );.......................... 2 1.3 char

More information

University of Illinois at Urbana-Champaign Department of Computer Science. First Examination

University of Illinois at Urbana-Champaign Department of Computer Science. First Examination University of Illinois at Urbana-Champaign Department of Computer Science First Examination CS 225 Data Structures and Software Principles Summer 2005 3:00pm 4:15pm Tuesday, July 5 Name: NetID: Lab Section

More information

6.096 Introduction to C++ January (IAP) 2009

6.096 Introduction to C++ January (IAP) 2009 MIT OpenCourseWare http://ocw.mit.edu 6.096 Introduction to C++ January (IAP) 2009 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms. Welcome to 6.096 Lecture

More information

// Initially NULL, points to the dynamically allocated array of bytes. uint8_t *data;

// Initially NULL, points to the dynamically allocated array of bytes. uint8_t *data; Creating a Data Type in C Bytes For this assignment, you will use the struct mechanism in C to implement a data type that represents an array of bytes. This data structure could be used kind of like a

More information

Do not start the test until instructed to do so!

Do not start the test until instructed to do so! Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted one-page formula sheet. No calculators or other electronic devices

More information

CS3157: Advanced Programming. Announcement

CS3157: Advanced Programming. Announcement CS3157: Advanced Programming Lecture #10 Mar 20 Shlomo Hershkop shlomo@cs.columbia.edu Announcement Welcome back from spring break Hope you ve caught up with your courses Have the exams back, will return

More information

C Syntax Out: 15 September, 1995

C Syntax Out: 15 September, 1995 Burt Rosenberg Math 220/317: Programming II/Data Structures 1 C Syntax Out: 15 September, 1995 Constants. Integer such as 1, 0, 14, 0x0A. Characters such as A, B, \0. Strings such as "Hello World!\n",

More information

CSCE 145 Exam 1 Review. This exam totals to 100 points. Follow the instructions. Good luck!

CSCE 145 Exam 1 Review. This exam totals to 100 points. Follow the instructions. Good luck! CSCE 145 Exam 1 Review This exam totals to 100 points. Follow the instructions. Good luck! Chapter 1 This chapter was mostly terms so expect a fill in the blank style questions on definition. Remember

More information

CS Final Exam. Stanford University Computer Science Department. June 5, 2012 !!!!! SKIP 15 POINTS WORTH OF QUESTIONS.!!!!!

CS Final Exam. Stanford University Computer Science Department. June 5, 2012 !!!!! SKIP 15 POINTS WORTH OF QUESTIONS.!!!!! CS 240 - Final Exam Stanford University Computer Science Department June 5, 2012!!!!! SKIP 15 POINTS WORTH OF QUESTIONS.!!!!! This is an open-book (but closed-laptop) exam. You have 75 minutes. Cross out

More information

CS 237 Meeting 19 10/24/12

CS 237 Meeting 19 10/24/12 CS 237 Meeting 19 10/24/12 Announcements 1. Midterm: New date: Oct 29th. In class open book/notes. 2. Try to complete the linear feedback shift register lab in one sitting (and please put all the equipment

More information

C Syntax Arrays and Loops Math Strings Structures Pointers File I/O. Final Review CS Prof. Jonathan Ventura. Prof. Jonathan Ventura Final Review

C Syntax Arrays and Loops Math Strings Structures Pointers File I/O. Final Review CS Prof. Jonathan Ventura. Prof. Jonathan Ventura Final Review CS 2060 Variables Variables are statically typed. Variables must be defined before they are used. You only specify the type name when you define the variable. int a, b, c; float d, e, f; char letter; //

More information

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26 COSC 2P95 Procedural Abstraction Week 3 Brock University Brock University (Week 3) Procedural Abstraction 1 / 26 Procedural Abstraction We ve already discussed how to arrange complex sets of actions (e.g.

More information

Winter 2017 Feb 13 th, 2017 CS106A Midterm. Last Name: First Name: Sunet ID (eg jdoe): Section Leader / Grader:

Winter 2017 Feb 13 th, 2017 CS106A Midterm. Last Name: First Name: Sunet ID (eg jdoe): Section Leader / Grader: CS106A Chris Piech Winter 2017 Feb 13 th, 2017 CS106A Midterm This is an open-note, open-book exam. You can refer to any course handouts, textbooks, handwritten lecture notes, and printouts of any code

More information

Stanford University Computer Science Department CS 295 midterm. May 14, (45 points) (30 points) total

Stanford University Computer Science Department CS 295 midterm. May 14, (45 points) (30 points) total Stanford University Computer Science Department CS 295 midterm May 14, 2008 This is an open-book exam. You have 75 minutes. Write all of your answers directly on the paper. Make your answers as concise

More information

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 19 November 2014

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 19 November 2014 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

11 'e' 'x' 'e' 'm' 'p' 'l' 'i' 'f' 'i' 'e' 'd' bool equal(const unsigned char pstr[], const char *cstr) {

11 'e' 'x' 'e' 'm' 'p' 'l' 'i' 'f' 'i' 'e' 'd' bool equal(const unsigned char pstr[], const char *cstr) { This document contains the questions and solutions to the CS107 midterm given in Spring 2016 by instructors Julie Zelenski and Michael Chang. This was an 80-minute exam. Midterm questions Problem 1: C-strings

More information

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018 Pointer Basics Lecture 13 COP 3014 Spring 2018 March 28, 2018 What is a Pointer? A pointer is a variable that stores a memory address. Pointers are used to store the addresses of other variables or memory

More information

EMBEDDED SYSTEMS PROGRAMMING Language Basics

EMBEDDED SYSTEMS PROGRAMMING Language Basics EMBEDDED SYSTEMS PROGRAMMING 2015-16 Language Basics "The tower of Babel" by Pieter Bruegel the Elder Kunsthistorisches Museum, Vienna (PROGRAMMING) LANGUAGES ABOUT THE LANGUAGES C (1972) Designed to replace

More information

My malloc: mylloc and mhysa. Johan Montelius HT2016

My malloc: mylloc and mhysa. Johan Montelius HT2016 1 Introduction My malloc: mylloc and mhysa Johan Montelius HT2016 So this is an experiment where we will implement our own malloc. We will not implement the world s fastest allocator, but it will work

More information

ECE264 Spring 2013 Final Exam, April 30, 2013

ECE264 Spring 2013 Final Exam, April 30, 2013 ECE264 Spring 2013 Final Exam, April 30, 2013 In signing this statement, I hereby certify that the work on this exam is my own and that I have not copied the work of any other student while completing

More information

CS 103 Unit 11. Linked Lists. Mark Redekopp

CS 103 Unit 11. Linked Lists. Mark Redekopp 1 CS 103 Unit 11 Linked Lists Mark Redekopp 2 NULL Pointer Just like there was a null character in ASCII = '\0' whose ue was 0 There is a NULL pointer whose ue is 0 NULL is "keyword" you can use in C/C++

More information

C++ for Java Programmers

C++ for Java Programmers Basics all Finished! Everything we have covered so far: Lecture 5 Operators Variables Arrays Null Terminated Strings Structs Functions 1 2 45 mins of pure fun Introduction Today: Pointers Pointers Even

More information

EECS 470 Midterm Exam Winter 2008 answers

EECS 470 Midterm Exam Winter 2008 answers EECS 470 Midterm Exam Winter 2008 answers Name: KEY unique name: KEY Sign the honor code: I have neither given nor received aid on this exam nor observed anyone else doing so. Scores: #Page Points 2 /10

More information

CS : Programming for Non-majors, Fall 2018 Programming Project #2: Census Due by 10:20am Wednesday September

CS : Programming for Non-majors, Fall 2018 Programming Project #2: Census Due by 10:20am Wednesday September CS 1313 010: Programming for Non-majors, Fall 2018 Programming Project #2: Census Due by 10:20am Wednesday September 19 2018 This second assignment will introduce you to designing, developing, testing

More information

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

Malloc Lab & Midterm Solutions. Recitation 11: Tuesday: 11/08/2016 Malloc Lab & Midterm Solutions Recitation 11: Tuesday: 11/08/2016 Malloc 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than

More information

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

Features of C. Portable Procedural / Modular Structured Language Statically typed Middle level language 1 History C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell Labs. C was originally first implemented on the DEC

More information

Getting started with C++ (Part 2)

Getting started with C++ (Part 2) Getting started with C++ (Part 2) CS427: Elements of Software Engineering Lecture 2.2 11am, 16 Jan 2012 CS427 Getting started with C++ (Part 2) 1/22 Outline 1 Recall from last week... 2 Recall: Output

More information

CSE413 Midterm. Question Max Points Total 100

CSE413 Midterm. Question Max Points Total 100 CSE413 Midterm 05 November 2007 Name Student ID Answer all questions; show your work. You may use: 1. The Scheme language definition. 2. One 8.5 * 11 piece of paper with handwritten notes Other items,

More information

So far, system calls have had easy syntax. Integer, character string, and structure arguments.

So far, system calls have had easy syntax. Integer, character string, and structure arguments. Pointers Page 1 So far, system calls have had easy syntax Wednesday, September 30, 2015 10:45 AM Integer, character string, and structure arguments. But this is not always true. Today, we begin to explore

More information

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

CPSC 211, Sections : Data Structures and Implementations, Honors Final Exam May 4, 2001 CPSC 211, Sections 201 203: Data Structures and Implementations, Honors Final Exam May 4, 2001 Name: Section: Instructions: 1. This is a closed book exam. Do not use any notes or books. Do not confer with

More information

Dynamic Memory: Alignment and Fragmentation

Dynamic Memory: Alignment and Fragmentation Dynamic Memory: Alignment and Fragmentation Learning Objectives Explain the purpose of dynamic memory Define the terms arena, heap Identify common errors involving dynamic memory Explain how dynamic memory

More information

Main Program. C Programming Notes. #include <stdio.h> main() { printf( Hello ); } Comments: /* comment */ //comment. Dr. Karne Towson University

Main Program. C Programming Notes. #include <stdio.h> main() { printf( Hello ); } Comments: /* comment */ //comment. Dr. Karne Towson University C Programming Notes Dr. Karne Towson University Reference for C http://www.cplusplus.com/reference/ Main Program #include main() printf( Hello ); Comments: /* comment */ //comment 1 Data Types

More information

CSE P 501 Exam 12/1/11

CSE P 501 Exam 12/1/11 Name There are 7 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. You may refer to the following references:

More information

Introduction. Primitive Data Types: Integer. Primitive Data Types. ICOM 4036 Programming Languages

Introduction. Primitive Data Types: Integer. Primitive Data Types. ICOM 4036 Programming Languages ICOM 4036 Programming Languages Primitive Data Types Character String Types User-Defined Ordinal Types Array Types Associative Arrays Record Types Union Types Pointer and Reference Types Data Types This

More information

FOR Loop. FOR Loop has three parts:initialization,condition,increment. Syntax. for(initialization;condition;increment){ body;

FOR Loop. FOR Loop has three parts:initialization,condition,increment. Syntax. for(initialization;condition;increment){ body; CLASSROOM SESSION Loops in C Loops are used to repeat the execution of statement or blocks There are two types of loops 1.Entry Controlled For and While 2. Exit Controlled Do while FOR Loop FOR Loop has

More information

Pointers. A pointer is simply a reference to a variable/object. Compilers automatically generate code to store/retrieve variables from memory

Pointers. A pointer is simply a reference to a variable/object. Compilers automatically generate code to store/retrieve variables from memory Pointers A pointer is simply a reference to a variable/object Compilers automatically generate code to store/retrieve variables from memory It is automatically generating internal pointers We don t have

More information

CS106X Handout 33 Winter 2018 February 28 th, 2018 Section Handout

CS106X Handout 33 Winter 2018 February 28 th, 2018 Section Handout CS106X Handout 33 Winter 2018 February 28 th, 2018 Section Handout Problem 1: People You May Know Because Facebook is interested in growing out its social graph, users are often presented with a list of

More information

CSC231 C Tutorial Fall 2018 Introduction to C

CSC231 C Tutorial Fall 2018 Introduction to C mith College CSC231 C Tutorial Fall 2018 Introduction to C Dominique Thiébaut dthiebaut@smith.edu Learning C in 4 Installments! Dennis Ritchie 1969 to 1973 AT&T Bell Labs Close to Assembly Unix Standard

More information

ComS 228 Exam 1. September 27, 2004

ComS 228 Exam 1. September 27, 2004 ComS 228 Exam 1 September 27, 2004 Name: University ID: Section: (10 percent penalty if incorrect) This is a one-hour, closed-book, closed-notes, closed-calculator exam. The exam consists of 9 pages (including

More information

CS50 Supersection (for those less comfortable)

CS50 Supersection (for those less comfortable) CS50 Supersection (for those less comfortable) Friday, September 8, 2017 3 4pm, Science Center C Maria Zlatkova, Doug Lloyd Today s Topics Setting up CS50 IDE Variables and Data Types Conditions Boolean

More information

Final CSE 131B Spring 2004

Final CSE 131B Spring 2004 Login name Signature Name Student ID Final CSE 131B Spring 2004 Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 (25 points) (24 points) (32 points) (24 points) (28 points) (26 points) (22 points)

More information