Templates and Operator Overloading in C++

Size: px
Start display at page:

Download "Templates and Operator Overloading in C++"

Transcription

1 Templates and Operator Overloading in C++ CSE030 Lab 12 Assignment 12 Tuesday Section (03L) Due Date (100%): November 27 at 1:50pm Resubmission Deadline (50% credit): December 4 at 11:00am Thursday Section (02L) Due Date (100%): November 29 at 10:50am Resubmission Deadline (50% credit): December 6 at 8:00am 1 Description This lab will explore templates and operator overloading in the C++ programming language. The goal of the first part of this lab is to modify the previously-implemented Linked List so that it can now be used to store any data types as opposed to a specific one (integers in our case). This part of the lab will be solved using templates so that our original list of integers can still be used, but with different data types (i.e. doubles, floats, characters, strings, etc...). In second part of the lab, students will explore operator overloading, a powerful but complex technique that allows programmers to define specific functions to operators (i.e. +, -,,!, <<, =, >>, etc...) when used with user-created objects/classes. Once again, the Linked List class will be exploited and a set of operators will be implemented to render the class more user-friendly. WARNING: Your lab will be checked to make sure that you have the right functions implemented as per the lab s description. You have to use the first Linked List class for part 1 (LinkedListP1.h), the Linked List class files for part 2 (LinkedList.h and LinkedList.cpp), and two main files (part1.cpp and part2.cpp) provided on UCMCROPS. YOU ARE NOT to modify the files - simply add code wherever appropriate. Getting 100% with grade me WITHOUT having implementing the right functions will result in getting a 0 for this lab. Note: You need to have a separate program for each part of the lab. When you make a tar ball of your lab assignment to submit through UCMCROPS (see below for more information on how to do that), make sure that ALL PARTS are included. 1

2 2 Getting Started Download the files LinkedListP1.h, LinhkedList.h, LinkedList.cpp, part1.cpp, and part2.cpp. The LinkedListP1.h is the LinkedList class implementation that you will modify so that it becomes a templated class (part 1). The LinkedList.h and LinkedList.cpp files are the LinkedList class implementation for part2, in which you will implement the four overloaded operators. You do not need to modify LinkedList.h. The part1.cpp file is the main file for part1 and the part2.cpp file is the main file for part2. Create a new directory in your main development directory (probably on Desktop/CSE030) called Lab12. Similarly, create a new directory inside Lab12 for each part of this lab (i.e. part1, part2, etc...). Most of you should be able to do this with your eyes closed by now (if not with your eyes closed, you should not need to ask for help from the TA and/or friends). 3 Reminder Once you have created a file and coded its content, you want to compile the source file (i.e. main.cpp) into an executable so that you can run it on your computer. Note: EVERYTIME you modify your source file (i.e. main.cpp), you MUST re-compile your source file for the changes to take effect. You will compile from the command line by running: g++ source -o executable where g++ is a program (already installed on your Linux system) that compiles C++ source files, source is the source file for your program, -o tells the compiler that you want to give the executable its own name, and executable is the name you want to give your program. As an example, if we have a source file (with C++ code inside) called test.cpp and want to create an executable called atestprogram, we would have to run: g++ test.cpp -o atestprogram Assuming that your program compiled successfully (i.e. no errors were found), you can run your program by typing./executable in the terminal/console. Again, looking at the previous example where we created a test program, the command to run it would be./atestprogram. 4 Compiling Classes The g++ syntax to compile classes is slightly different than for a single program comprised of a main (and potential functions): g++ class1.h class1.cpp class2.h class2.cpp mainsource.cpp -o executable 2

3 where g++ is a program (already installed on your Linux system) that compiles C++ source files, mainsource.cpp is the source file for your main program (where the main function is), class1.h is the class skeleton/declaration for your 1st class, class1.cpp is your 1st class implementation, class2.h is the class skeleton/declaration for your 2nd class, class2.cpp is your 2nd class implementation (and so on...), -o tells the compiler that you want to give the executable its own name, and executable is the name you want to give your program. As an example, if we have a main source file called main.cpp, the class skeleton/declaration called Time.h, the class implementation called Time.cpp, and want to create an executable called atestprogram, we would have to run: g++ Time.h Time.cpp main.cpp -o atestprogram Assuming that your program compiled successfully (i.e. no errors were found), you can run your program as you normally would by typing./executable in the terminal/console. Again, looking at the previous example where we created a test program, the command to run it would be./atestprogram. 5 Part 1 (8 pts) In this part of the lab, you will modify LinkedListP1.h and part1.cpp in such a way that the original Linked List, which only worked for integers, will be templated and consequently work for any data type (string, char, double, etc...). Since the class is already provided for you (and you have already implemented a Linked List specifically for integers), templating it is quite straightforward. More specifically, you need to modify the LinkedListP1.h and add the construct template class T before any class declaration, structure declaration, and function declaration. The construct tells C++ that it can use any data type (defined by T) as part of the class. This means that if you want a Linked List of type int, then T will represent an int. If you want a Linked List of type string, then T will represent a string. Once you have added the construct in front of every structure declaration, class declaration, and function declaration, you need to modify the code to take into account that we will now use T (which represents the data type) instead of int. This means that every time int is used for the LinkedList values, you will replace it by T. Finally, every time you use a templated structure or class, you need to add T in the class and datatype in the main file (where datatype is int, string, etc...). In otherwords, if you have a templated class called Array, you will need to use Array T where ever appropriate inside the class and Array double inside the main file. To summarize, templating the Linked List class is comprised of 4 steps: 1) Inside LinkedListP1.h, add the construct template class T in front of every structure declaration, class declaration, and function declaration. 2) Modify LinkedListP1.h, so that it uses T as the data type for its values (instead of int). 3) Modify LinkedListP1.h, so that whenever a Node or a LinkedList is used (even namespaces!), it is used as a template (i.e. Node T or LinkedList T ). 3

4 4) Modify the first 4 lines of part1.cpp, so that the appropriate LinkedList type is created (see comments). As always, make sure you follow EXACTLY the output structure given in the examples. 5.1 Example 1 The first list is empty! The second list is empty! The third list is empty! The fourth list is empty! The size of the first list is: 0 The size of the second list is: 0 The size of the third list is: 0 The size of the fourth list is: 0 Here is the first list: [10,-1,1] Here is the second list: [ ,0.7775,1.454] Here is the third list: [Ben,Stefano] Here is the first list: [10,-1,1] Here is the second list: [ ,0.7775,1.454] Here is the third list: [Ben,Stefano] Here is the fourth list: [C,S,E] Here is the first list: [-1,1] Here is the second list: [] Here is the third list: [Ben,Stefano] Here is the fourth list: [C,S,E] Here is the first list: [] Here is the second list: [] Here is the third list: [Teaching Assistant,Professor,Ben,Stefano] Here is the fourth list: [C,S,E,2,0] The size of the first list is: 0 The size of the second list is: 0 The size of the third list is: 4 The size of the fourth list is: 5 The first list is empty! The second list is empty! Here is the fourth list: [C,S,E,2,0] Here is the fourth list: [S,E,2,0] Here is the fourth list: [S,E,2] 4

5 Here is the fourth list: [E,2] Here is the fourth list: [E] COULD NOT remove an item from the list! COULD NOT remove an item from the list! The size of the first list is: 0 The size of the second list is: 0 The size of the third list is: 4 The size of the fourth list is: 0 The first list is empty! The second list is empty! The fourth list is empty! 5.2 Grade Me Command Use the following command to grade this project: grade me lab12 part1 executable where executable is the name of your compiled program. 6 Part 2 (8 pts) In this part of the lab you will add overloaded operators to your LinkedList. Download the files LinkedList.h, LinkedList.cpp, and part2.cpp. You DO NOT need to modify LinkedList.h and part2.cpp. You simply need to fill in the overloaded operators inside LinkedList.cpp. Specifically, you need to write code for the following overloaded operators: LinkedList& operator=(linkedlist& rhs): this is the equal operator that allows one LinkedList to be assigned to another (using the form list1 = list2;). In this function (or overloaded operator), you should take the content of the right hand side of the equation (list2 in the example, which is defined by the parameter rhs) and assign it to the left-hand side (list1 in this example). You have access to the left-hand side of the equation by using the this keyword. Hint: You can use any functions that have already been implemented. Use the functions to make your life/coding simpler. Hint: Make sure that you clear/empty the list on the left hand side of the equation before you do anything. Hint: Be careful and take into account self-assignment (i.e., list1=list1). The list should 5

6 not be modified in that case. LinkedList& operator+=(linkedlist& rhs): the += operator appends the list on the right-hand side of the equation to the one on the right hand side of the equation (list1+=list2). Once again, the parameter passed into the function, rhs, is the right-hand side of the equation (list2 in the example) and you can use the keyword this to access the left-hand side of the equation (part1). Note: Once again, be careful with self-assignments (list1+=list1;). Hint: You can use any functions that have already been implemented. Use the functions to make your life/coding simpler. void operator (): This is a unary operator that we will use to clear/empty the linked list ( list1;). Unary operators do not take any parameters and you can access the list (list1 in this example) by using the keyword this. Hint: This is a very simple function that should only be one line. friend ostream &operator<<(ostream &out, LinkedList& rhs): This operator allows you to print your object directly onto the screen. This is a special operator in that it must be a friend of your class so that the ostream (output stream) can be accessed. With this operator, you will print out the list to the screen. 6.1 Example 1 Here is the first list: [1,2,3,4,5,6,7] Here is the second list: [10,5,0,-5] Here is the third list: [8,9,10,11] Here is the first list: [1,2,3,4,5,6,7] Here is the second list: [10,5,0,-5] Here is the third list: [8,9,10,11] Here is the fourth list: [1,2,3,4,5,6,7] Here is the first list: [1,2,3,4,5,6,7] Here is the second list: [10,5,0,-5] Here is the third list: [10,5,0,-5] Here is the fourth list: [1,2,3,4,5,6,7,8,9,10,11] Here is the first list: [1,2,3,4,5,6,7,8,9,10,11] 6

7 Here is the second list: [1,2,3,4,5,6,7,8,9,10,11] Here is the third list: [1,2,3,4,5,6,7,8,9,10,11] Here is the fourth list: [1,2,3,4,5,6,7,8,9,10,11] Here is the first list: [1,2,3,4,5,6,7,8,9,10,11] Here is the second list: [1,2,3,4,5,6,7,8,9,10,11] Here is the third list: [] Here is the first list: [1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11] Here is the second list: [1,2,3,4,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,10,11] Here is the third list: [] 6.2 Grade Me Command Use the following command to grade this project: grade me lab12 part2 executable where executable is the name of your compiled program. 7 Your solutions Before leaving the lab, make sure that you have received credit (full or partial) from the grade me program for the parts of the assignment. Submit a tar ball of your program through the assignments page of UCMCROPS. Please follow the following naming convention for your submissions: LastName FirstName.tar In order to tar a folder named Lab12, please execute the following command in a terminal: tar cvf LastName FirstName.tar Lab12 Be careful since UCMCROPS strictly enforces the assignment deadlines (deadlines will be at the end of the lab). Note: You need to have a separate program for each of the parts of this lab. When you make the tar ball of your lab assignment to submit through UCMCROPS, make sure that ALL PARTS are included. 7

CE221 Programming in C++ Part 1 Introduction

CE221 Programming in C++ Part 1 Introduction CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab

More information

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS204, 2 nd Term 2014 Program 5: FCITbook Assigned: Thursday, May 1 st, 2014 Due: Thursday, May 15

More information

III. Classes (Chap. 3)

III. Classes (Chap. 3) III. Classes III-1 III. Classes (Chap. 3) As we have seen, C++ data types can be classified as: Fundamental (or simple or scalar): A data object of one of these types is a single object. int, double, char,

More information

Lab 2: ADT Design & Implementation

Lab 2: ADT Design & Implementation Lab 2: ADT Design & Implementation By Dr. Yingwu Zhu, Seattle University 1. Goals In this lab, you are required to use a dynamic array to design and implement an ADT SortedList that maintains a sorted

More information

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS202, 1 st Term 2016 (Fall 2015) Program 5: FCIT Grade Management System Assigned: Thursday, December

More information

CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017

CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017 CS447-Network and Data Communication Project #2 Specification, Fall 2017 Due December 5, 2017 1. Introduction In this project, we will develop a Sliding-Window flow-control (SWFC) simulator using C/C++

More information

EECE.2160: ECE Application Programming

EECE.2160: ECE Application Programming Fall 2017 Programming Assignment #10: Doubly-Linked Lists Due Monday, 12/18/17, 11:59:59 PM (Extra credit ( 5 pts on final average), no late submissions or resubmissions) 1. Introduction This assignment

More information

Compilers Project 3: Semantic Analyzer

Compilers Project 3: Semantic Analyzer Compilers Project 3: Semantic Analyzer CSE 40243 Due April 11, 2006 Updated March 14, 2006 Overview Your compiler is halfway done. It now can both recognize individual elements of the language (scan) and

More information

Lab 2.1: Fixing a C++ program

Lab 2.1: Fixing a C++ program CS 150 Lab 2 Introduction to Compiler Errors, Variables, Assignments and Output The purpose of today s lab session is to allow you to gain experience using primitive data types, constants, assignment statements

More information

CS150 Assignment 7 DNA!

CS150 Assignment 7 DNA! CS150 Assignment 7 DNA! Date assigned: Monday, November 17, 2008 Design Documents Due: Friday, November 21, 2008, 1pm (5 points) Date due: Tuesday, December 2, 2008, 5pm (55 points) Total points: 60pts

More information

CMPSCI 187 / Spring 2015 Hanoi

CMPSCI 187 / Spring 2015 Hanoi Due on Thursday, March 12, 2015, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 Contents Overview 3 Learning Goals.................................................

More information

KOM3191 Object Oriented Programming Dr Muharrem Mercimek OPERATOR OVERLOADING. KOM3191 Object-Oriented Programming

KOM3191 Object Oriented Programming Dr Muharrem Mercimek OPERATOR OVERLOADING. KOM3191 Object-Oriented Programming KOM3191 Object Oriented Programming Dr Muharrem Mercimek 1 OPERATOR OVERLOADING KOM3191 Object-Oriented Programming KOM3191 Object Oriented Programming Dr Muharrem Mercimek 2 Dynamic Memory Management

More information

This is a combination of a programming assignment and ungraded exercises

This is a combination of a programming assignment and ungraded exercises CSE 11 Winter 2017 Programming Assignment #1 Covers Chapters: ZY 1-3 START EARLY! 100 Pts Due: 25 JAN 2017 at 11:59pm (2359) This is a combination of a programming assignment and ungraded exercises Exercises

More information

DHA Suffa University CS 103 Object Oriented Programming Fall 2015 Lab #01: Introduction to C++

DHA Suffa University CS 103 Object Oriented Programming Fall 2015 Lab #01: Introduction to C++ DHA Suffa University CS 103 Object Oriented Programming Fall 2015 Lab #01: Introduction to C++ Objective: To Learn Basic input, output, and procedural part of C++. C++ Object-orientated programming language

More information

ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi

ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi ENGR 3950U / CSCI 3020U (Operating Systems) Simulated UNIX File System Project Instructor: Dr. Kamran Sartipi Your project is to implement a simple file system using C language. The final version of your

More information

CS 240 Data Structure Spring 2018 Exam I 03/01/2018

CS 240 Data Structure Spring 2018 Exam I 03/01/2018 CS 240 Data Structure Spring 2018 Exam I 03/01/2018 This exam contains three section A) Code: (basic data type, pointer, ADT) a. Reading: Trace the code to predict the output of the code b. Filling: Fill

More information

CS 3204 Operating Systems Programming Project #2 Job / CPU Scheduling Dr. Sallie Henry Spring 2001 Due on February 27, 2001.

CS 3204 Operating Systems Programming Project #2 Job / CPU Scheduling Dr. Sallie Henry Spring 2001 Due on February 27, 2001. CS 3204 Operating Systems Programming Project #2 Job / CPU Scheduling Dr. Sallie Henry Spring 2001 Due on February 27, 2001. 23:59:59 PM Design and implement a program that simulates some of the job scheduling,

More information

CSE 5A Introduction to Programming I (C) Homework 4

CSE 5A Introduction to Programming I (C) Homework 4 CSE 5A Introduction to Programming I (C) Homework 4 Read Chapter 7 Due: Friday, October 26 by 6:00pm All programming assignments must be done INDIVIDUALLY by all members of the class. Start early to ensure

More information

CS Homework 11 p. 1. CS Homework 11

CS Homework 11 p. 1. CS Homework 11 CS 111 - Homework 11 p. 1 Deadline 11:59 pm on Monday, May 2, 2016 How to submit Each time you would like to submit your work: CS 111 - Homework 11 If your files are not already on nrs-labs, be sure to

More information

2017/12/20 20:31 1/6 Lab 1 - Producer/Consumer in XINU

2017/12/20 20:31 1/6 Lab 1 - Producer/Consumer in XINU 2017/12/20 20:31 1/6 Lab 1 - Producer/Consumer in XINU Lab 1 - Producer/Consumer in XINU DUE: Tuesday, September 6th 11:59 PM Objectives By the end of this lab students will be able to: Understand how

More information

Programming Assignment 2

Programming Assignment 2 CS 122 Fall, 2004 Programming Assignment 2 New Mexico Tech Department of Computer Science Programming Assignment 2 CS122 Algorithms and Data Structures Due 11:00AM, Wednesday, October 13th, 2004 Objectives:

More information

CS11 Advanced C++ Spring 2018 Lecture 1

CS11 Advanced C++ Spring 2018 Lecture 1 CS11 Advanced C++ Spring 2018 Lecture 1 Welcome to CS11 Advanced C++! A deeper dive into C++ programming language topics Prerequisites: CS11 Intro C++ track is strongly recommended (obvious) You should

More information

Floating-point lab deadline moved until Wednesday Today: characters, strings, scanf Characters, strings, scanf questions clicker questions

Floating-point lab deadline moved until Wednesday Today: characters, strings, scanf Characters, strings, scanf questions clicker questions Announcements Thursday Extras: CS Commons on Thursdays @ 4:00 pm but none next week No office hours next week Monday or Tuesday Reflections: when to use if/switch statements for/while statements Floating-point

More information

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG 1 Notice Reading Assignment Chapter 1: Introduction to Java Programming Homework 1 It is due this coming Sunday

More information

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS204, 2 nd Term 2014 Program 2: KAU Grade Book (Linked Lists) Assigned: Thursday, February 20 th,

More information

ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists

ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists ASSIGNMENT 5 Data Structures, Files, Exceptions, and To-Do Lists COMP-202B, Winter 2009, All Sections Due: Tuesday, April 14, 2009 (23:55) You MUST do this assignment individually and, unless otherwise

More information

Jim Lambers ENERGY 211 / CME 211 Autumn Quarter Programming Project 2

Jim Lambers ENERGY 211 / CME 211 Autumn Quarter Programming Project 2 Jim Lambers ENERGY 211 / CME 211 Autumn Quarter 2007-08 Programming Project 2 This project is due at 11:59pm on Friday, October 17. 1 Introduction In this project, you will implement functions in order

More information

Review: Using Imported Code. What About the DrawingGizmo? Review: Classes and Object Instances. DrawingGizmo pencil; pencil = new DrawingGizmo();

Review: Using Imported Code. What About the DrawingGizmo? Review: Classes and Object Instances. DrawingGizmo pencil; pencil = new DrawingGizmo(); Review: Using Imported Code Class #06: Objects, Memory, & Program Traces Software Engineering I (CS 120): M. Allen, 30 Jan. 2018 ; = new ();.setbackground( java.awt.color.blue );.setforeground( java.awt.color.yellow

More information

EECE.2160: ECE Application Programming

EECE.2160: ECE Application Programming Spring 2018 Programming Assignment #10: Instruction Decoding and File I/O Due Wednesday, 5/9/18, 11:59:59 PM (Extra credit ( 4 pts on final average), no late submissions or resubmissions) 1. Introduction

More information

Assignment 5: MyString COP3330 Fall 2017

Assignment 5: MyString COP3330 Fall 2017 Assignment 5: MyString COP3330 Fall 2017 Due: Wednesday, November 15, 2017 at 11:59 PM Objective This assignment will provide experience in managing dynamic memory allocation inside a class as well as

More information

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time)

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) CSE 11 Winter 2017 Program Assignment #2 (100 points) START EARLY! Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) PROGRAM #2: DoubleArray11 READ THE ENTIRE ASSIGNMENT BEFORE STARTING In lecture,

More information

PIC 10A Objects/Classes

PIC 10A Objects/Classes PIC 10A Objects/Classes Ernest Ryu UCLA Mathematics Last edited: November 13, 2017 User-defined types In C++, we can define our own custom types. Object is synonymous to variable, and class is synonymous

More information

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor. 3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.

More information

Spring CS Homework 12 p. 1. CS Homework 12

Spring CS Homework 12 p. 1. CS Homework 12 Spring 2018 - CS 111 - Homework 12 p. 1 Deadline 11:59 pm on Friday, May 4, 2018 Purpose CS 111 - Homework 12 To practice with sentinel- and question-controlled loops, file input and file output, and writing

More information

Compiler Design: Lab 3 Fall 2009

Compiler Design: Lab 3 Fall 2009 15-411 Compiler Design: Lab 3 Fall 2009 Instructor: Frank Pfenning TAs: Ruy Ley-Wild and Miguel Silva Test Programs Due: 11:59pm, Thursday, October 8, 2009 Compilers Due: 11:59pm, Thursday, October 15,

More information

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit. Com S 227 Fall 2017 Miniassignment 1 50 points Due Date: Monday, October 16, 11:59 pm (midnight) Late deadline (25% penalty): Tuesday, October 17, 11:59 pm General information This assignment is to be

More information

UEE1302 (1102) F10: Introduction to Computers and Programming

UEE1302 (1102) F10: Introduction to Computers and Programming Computational Intelligence on Automation Lab @ NCTU Learning Objectives UEE1302 (1102) F10: Introduction to Computers and Programming Programming Lecture 00 Programming by Example Introduction to C++ Origins,

More information

CS31 Discussion 1E. Jie(Jay) Wang Week1 Sept. 30

CS31 Discussion 1E. Jie(Jay) Wang Week1 Sept. 30 CS31 Discussion 1E Jie(Jay) Wang Week1 Sept. 30 About me Jie Wang E-mail: holawj@gmail.com Office hour: Wednesday 3:30 5:30 BH2432 Thursday 12:30 1:30 BH2432 Slides of discussion will be uploaded to the

More information

Chapter 2 Working with Data Types and Operators

Chapter 2 Working with Data Types and Operators JavaScript, Fourth Edition 2-1 Chapter 2 Working with Data Types and Operators At a Glance Instructor s Manual Table of Contents Overview Objectives Teaching Tips Quick Quizzes Class Discussion Topics

More information

Programming Assignment #4

Programming Assignment #4 SSE2030: INTRODUCTION TO COMPUTER SYSTEMS (Fall 2014) Programming Assignment #4 Due: November 15, 11:59:59 PM 1. Introduction The goal of this programing assignment is to enable the student to get familiar

More information

CS Homework 11 p. 1. CS Homework 11

CS Homework 11 p. 1. CS Homework 11 CS 111 - Homework 11 p. 1 Deadline 11:59 pm on Friday, December 12, 2014 How to submit Each time you would like to submit your work: CS 111 - Homework 11 IF they are not already on nrs-labs, then transfer/save

More information

CPSC 545 Computing Systems Project 2: Hungary Eagles Need Feeding Due: April 27 th, 23:59PM

CPSC 545 Computing Systems Project 2: Hungary Eagles Need Feeding Due: April 27 th, 23:59PM CPSC 545 Computing Systems Project 2: Hungary Eagles Need Feeding Due: April 27 th, 23:59PM 1. Goal To develop a C/C++ multi-threading program that uses Pthread synchronization mechanisms to solve real-world

More information

General Instructions. You can use QtSpim simulator to work on these assignments.

General Instructions. You can use QtSpim simulator to work on these assignments. General Instructions You can use QtSpim simulator to work on these assignments. Only one member of each group has to submit the assignment. Please Make sure that there is no duplicate submission from your

More information

Programming Assignment #4 Arrays and Pointers

Programming Assignment #4 Arrays and Pointers CS-2301, System Programming for Non-majors, B-term 2013 Project 4 (30 points) Assigned: Tuesday, November 19, 2013 Due: Tuesday, November 26, Noon Abstract Programming Assignment #4 Arrays and Pointers

More information

CS 215 Fundamentals of Programming II Spring 2011 Project 2

CS 215 Fundamentals of Programming II Spring 2011 Project 2 CS 215 Fundamentals of Programming II Spring 2011 Project 2 20 points Out: February 2, 2011 Due: February 9, 2011 Reminder: Programming Projects (as opposed to Homework exercises) are to be your own work.

More information

CS 150 Lab 10 Functions and Random Numbers

CS 150 Lab 10 Functions and Random Numbers CS 150 Lab 10 Functions and Random Numbers The objective of today s lab is to implement functions and random numbers in a simple game. Be sure your output looks exactly like the specified output. Be sure

More information

C++ Programming. Arrays and Vectors. Chapter 6. Objectives. Chiou. This chapter introduces the important topic of data structures collections

C++ Programming. Arrays and Vectors. Chapter 6. Objectives. Chiou. This chapter introduces the important topic of data structures collections C++ Programming Chapter 6 Arrays and Vectors Yih-Peng Chiou Room 617, BL Building (02) 3366-3603 3603 ypchiou@cc.ee.ntu.edu.tw Photonic Modeling and Design Lab. Graduate Institute of Photonics and Optoelectronics

More information

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.

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. Description of CPSC 301: This is a 2-unit credit/no credit course. It is a course taught entirely in lab, and has two required 2-hour 50-minute lab sessions per week. It will review, reinforce, and expand

More information

EAS230: Programming for Engineers Lab 1 Fall 2004

EAS230: Programming for Engineers Lab 1 Fall 2004 Lab1: Introduction Visual C++ Objective The objective of this lab is to teach students: To work with the Microsoft Visual C++ 6.0 environment (referred to as VC++). C++ program structure and basic input

More information

Introduction & Review

Introduction & Review CPSC 250 Data Structures Introduction & Review Dr. Yingwu Zhu What to learn? ADT design & implementation using C++ class Algorithm efficiency analysis Big-O ADTs: Binary search trees, AVL trees, Heaps,

More information

CMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists

CMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists CMPSCI 187 / Spring 2015 Implementing Sets Using Linked Lists Due on Tuesday February 24, 2015, 8:30 a.m. Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 CMPSCI

More information

Programming Assignments #4. Group project: Priority-based Job Scheduling

Programming Assignments #4. Group project: Priority-based Job Scheduling Programming Assignments #4 Group project: Priority-based Job Scheduling Due date: 11/28/2011 Monday 23:59PM Goals Understand important ADTs including priority queues and heaps Implement priority queues

More information

Introduction to System Programming Course 2015 Spring Euiseong Seo

Introduction to System Programming Course 2015 Spring Euiseong Seo Introduction to System Programming Course 2015 Spring Euiseong Seo (euiseong@skku.edu) 1 Overview What this course is about Who teaches this course Why you have to take this course What you will learn

More information

Object-Oriented Design (OOD) and C++

Object-Oriented Design (OOD) and C++ Chapter 2 Object-Oriented Design (OOD) and C++ At a Glance Instructor s Manual Table of Contents Chapter Overview Chapter Objectives Instructor Notes Quick Quizzes Discussion Questions Projects to Assign

More information

CS 103 The Social Network

CS 103 The Social Network CS 103 The Social Network 1 Introduction This assignment will be part 1 of 2 of the culmination of your C/C++ programming experience in this course. You will use C++ classes to model a social network,

More information

CSE 131 Introduction to Computer Science Fall 2016 Exam I. Print clearly the following information:

CSE 131 Introduction to Computer Science Fall 2016 Exam I. Print clearly the following information: CSE 131 Introduction to Computer Science Fall 2016 Given: 29 September 2016 Exam I Due: End of Exam Session This exam is closed-book, closed-notes, no electronic devices allowed The exception is the "sage

More information

PIC 10B Lecture 1 Winter 2014 Homework Assignment #3

PIC 10B Lecture 1 Winter 2014 Homework Assignment #3 PIC 10B Lecture 1 Winter 2014 Homework Assignment #3 Due Tuesday, February 4, 2014 by 5:00pm. Objectives: 1. To redefine the Big 3 : Copy constructor, Assignment operator, and Destructor for a class whose

More information

PIC 10B Lecture 1 Winter 2014 Homework Assignment #2

PIC 10B Lecture 1 Winter 2014 Homework Assignment #2 PIC 10B Lecture 1 Winter 2014 Homework Assignment #2 Due Friday, January 24, 2014 by 6:00pm. Objectives: 1. To overload C++ operators. Introduction: A set is a collection of values of the same type. For

More information

Object Oriented Design

Object Oriented Design Object Oriented Design Lecture 3: Introduction to C++ (Continue) Examples using declarations that eliminate the need to repeat the std:: prefix 1 Examples using namespace std; enables a program to use

More information

15-110: Principles of Computing, Spring 2018

15-110: Principles of Computing, Spring 2018 15-110: Principles of Computing, Spring 2018 Problem Set 5 (PS5) Due: Friday, February 23 by 2:30PM via Gradescope Hand-in HANDIN INSTRUCTIONS Download a copy of this PDF file. You have two ways to fill

More information

Compiling Your Code and Running the Tests

Compiling Your Code and Running the Tests Database Systems Instructor: Hao-Hua Chu Fall Semester, 2004 Assignment 4: Heap File Page Structure Deadline: 17:00, October 26 (Tuesday), 2004 This is a group assignment, and at most 2 people per group

More information

Starting to Program in C++ (Basics & I/O)

Starting to Program in C++ (Basics & I/O) Copyright by Bruce A. Draper. 2017, All Rights Reserved. Starting to Program in C++ (Basics & I/O) On Tuesday of this week, we started learning C++ by example. We gave you both the Complex class code and

More information

You should see something like this, called the prompt :

You should see something like this, called the prompt : CSE 1030 Lab 1 Basic Use of the Command Line PLEASE NOTE this lab will not be graded and does not count towards your final grade. However, all of these techniques are considered testable in a labtest.

More information

EECS 560 Lab 8: Leftist Heap as Priority Queue

EECS 560 Lab 8: Leftist Heap as Priority Queue EECS 560 Lab 8: Leftist Heap as Priority Queue Apoorv Ingle, Prof. Shontz Fall 2017 1 Lab Details Maximum Possible Points: 50 Lab Timings: 1. Monday Lab: Oct 23, 9:00 AM 10:50 AM 2. Wednesday Lab: Oct

More information

CSE100 Principles of Programming with C++

CSE100 Principles of Programming with C++ 1 Instructions You may work in pairs (that is, as a group of two) with a partner on this lab project if you wish or you may work alone. If you work with a partner, only submit one lab project with both

More information

A brief introduction to C++

A brief introduction to C++ A brief introduction to C++ Rupert Nash r.nash@epcc.ed.ac.uk 13 June 2018 1 References Bjarne Stroustrup, Programming: Principles and Practice Using C++ (2nd Ed.). Assumes very little but it s long Bjarne

More information

CS 103 Lab V for Vector

CS 103 Lab V for Vector 1 Introduction As you know, each int in C++ can store up to 2 31-1, which is about 2 billion, and each long can store a number up to 2 63-1, which is about 9 quintillion. For mathematical and cryptographical

More information

Linked lists Tutorial 5b

Linked lists Tutorial 5b Linked lists Tutorial 5b Katja Mankinen 6 October 2017 Aim Pointers are one of the most powerful tools in C++: with pointers, you can directly manipulate computer memory. However, at first glance they

More information

CMPSCI 187 / Spring 2015 Sorting Kata

CMPSCI 187 / Spring 2015 Sorting Kata Due on Thursday, April 30, 8:30 a.m Marc Liberatore and John Ridgway Morrill I N375 Section 01 @ 10:00 Section 02 @ 08:30 1 Contents Overview 3 Learning Goals.................................................

More information

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit.

Note: This is a miniassignment and the grading is automated. If you do not submit it correctly, you will receive at most half credit. Com S 227 Fall 2018 Miniassignment 1 40 points Due Date: Friday, October 12, 11:59 pm (midnight) Late deadline (25% penalty): Monday, October 15, 11:59 pm General information This assignment is to be done

More information

CS242 COMPUTER PROGRAMMING

CS242 COMPUTER PROGRAMMING CS242 COMPUTER PROGRAMMING I.Safa a Alawneh Variables Outline 2 Data Type C++ Built-in Data Types o o o o bool Data Type char Data Type int Data Type Floating-Point Data Types Variable Declaration Initializing

More information

Templating functions. Comp Sci 1570 Introduction to C++ Administrative notes. Review. Templates. Compiler processing. Functions Overloading

Templating functions. Comp Sci 1570 Introduction to C++ Administrative notes. Review. Templates. Compiler processing. Functions Overloading s s in Templating functions Comp Sci 1570 Introduction to Outline s s in 1 2 3 s s in 4 Test 1 grade distribution grade on y, each student on x, sorted by y s s in 50 or below should talk to me. Outline

More information

Programming Project 1

Programming Project 1 Programming Project 1 Handout 6 CSCI 134: Fall, 2016 Guidelines A programming project is a laboratory that you complete on your own, without the help of others. It is a form of take-home exam. You may

More information

CAAM 420 Fall 2012 Lecture 29. Duncan Eddy

CAAM 420 Fall 2012 Lecture 29. Duncan Eddy CAAM 420 Fall 2012 Lecture 29 Duncan Eddy November 7, 2012 Table of Contents 1 Templating in C++ 3 1.1 Motivation.............................................. 3 1.2 Templating Functions........................................

More information

For Teacher's Use Only Q No Total Q No Q No

For Teacher's Use Only Q No Total Q No Q No Student Info Student ID: Center: Exam Date: FINALTERM EXAMINATION Spring 2010 CS201- Introduction to Programming Time: 90 min Marks: 58 For Teacher's Use Only Q No. 1 2 3 4 5 6 7 8 Total Marks Q No. 9

More information

Datatypes, Variables, and Operations

Datatypes, Variables, and Operations Datatypes, Variables, and Operations 1 Primitive Type Classification 2 Numerical Data Types Name Range Storage Size byte 2 7 to 2 7 1 (-128 to 127) 8-bit signed short 2 15 to 2 15 1 (-32768 to 32767) 16-bit

More information

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

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below: QUIZ 1. Explain the meaning of the angle brackets in the declaration of v below: This is a template, used for generic programming! QUIZ 2. Why is the vector class called a container? 3. Explain how the

More information

CS 2110 Fall Instructions. 1 Installing the code. Homework 4 Paint Program. 0.1 Grading, Partners, Academic Integrity, Help

CS 2110 Fall Instructions. 1 Installing the code. Homework 4 Paint Program. 0.1 Grading, Partners, Academic Integrity, Help CS 2110 Fall 2012 Homework 4 Paint Program Due: Wednesday, 12 November, 11:59PM In this assignment, you will write parts of a simple paint program. Some of the functionality you will implement is: 1. Freehand

More information

CS16 Midterm Exam 2 E02, 10W, Phill Conrad, UC Santa Barbara Tuesday, 03/02/2010

CS16 Midterm Exam 2 E02, 10W, Phill Conrad, UC Santa Barbara Tuesday, 03/02/2010 CS16 Midterm Exam 2 E02, 10W, Phill Conrad, UC Santa Barbara Tuesday, 03/02/2010 Name: Umail Address: @ umail.ucsb.edu Circle Lab section: 3PM 4PM 5PM Link to Printer Friendly PDF Version Please write

More information

Tips from the experts: How to waste a lot of time on this assignment

Tips from the experts: How to waste a lot of time on this assignment Com S 227 Spring 2018 Assignment 1 100 points Due Date: Friday, September 14, 11:59 pm (midnight) Late deadline (25% penalty): Monday, September 17, 11:59 pm General information This assignment is to be

More information

CS2 Practical 1 CS2A 22/09/2004

CS2 Practical 1 CS2A 22/09/2004 CS2 Practical 1 Basic Java Programming The purpose of this practical is to re-enforce your Java programming abilities. The practical is based on material covered in CS1. It consists of ten simple programming

More information

OOP- 5 Stacks Individual Assignment 35 Points

OOP- 5 Stacks Individual Assignment 35 Points OOP-5-Stacks-HW.docx CSCI 2320 Initials P a g e 1 If this lab is an Individual assignment, you must do all coded programs on your own. You may ask others for help on the language syntax, but you must organize

More information

377 Student Guide to C++

377 Student Guide to C++ 377 Student Guide to C++ c Mark Corner January 21, 2004 1 Introduction In this course you will be using the C++ language to complete several programming assignments. Up to this point we have only provided

More information

CS Homework 10 p. 1. CS Homework 10

CS Homework 10 p. 1. CS Homework 10 CS 111 - Homework 10 p. 1 Deadline 11:59 pm on Friday, December 2, 2016 How to submit Each time you would like to submit your work: CS 111 - Homework 10 If your files are not already on nrs-labs, be sure

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #44. Multidimensional Array and pointers

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #44. Multidimensional Array and pointers Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #44 Multidimensional Array and pointers In this video, we will look at the relation between Multi-dimensional

More information

COMP 105 Homework: Type Systems

COMP 105 Homework: Type Systems Due Tuesday, March 29, at 11:59 PM (updated) The purpose of this assignment is to help you learn about type systems. Setup Make a clone of the book code: git clone linux.cs.tufts.edu:/comp/105/build-prove-compare

More information

INF 315E Introduction to Databases School of Information Fall 2015

INF 315E Introduction to Databases School of Information Fall 2015 INF 315E Introduction to Databases School of Information Fall 2015 Class Hours: Tuesday & Thursday10:30 am-12:00 pm Instructor: Eunyoung Moon Email: eymoon@utexas.edu Course Description Almost every website

More information

Sonoma State University Computer Science Department CS 115 Fall 2010 Watts. Project 3 Part 1

Sonoma State University Computer Science Department CS 115 Fall 2010 Watts. Project 3 Part 1 Sonoma State University Computer Science Department CS 115 Fall 2010 Watts Project 3 Part 1 For this part of the project you will be modifying one of the programs you submitted for Lab 8 to calculate your

More information

gcc o driver std=c99 -Wall driver.c bigmesa.c

gcc o driver std=c99 -Wall driver.c bigmesa.c C Programming Simple Array Processing This assignment consists of two parts. The first part focuses on array read accesses and computational logic. The second part focuses on array read/write access and

More information

(edit 3/7: fixed a typo in project specification 2-f) user_id that user enters should be in the range [0,n-1] (i.e., from 0 to n-1, inclusive))

(edit 3/7: fixed a typo in project specification 2-f) user_id that user enters should be in the range [0,n-1] (i.e., from 0 to n-1, inclusive)) CSE 231 Spring 2017 Programming Project 7 (edit 3/1: fixed a typo in num_in_common_between_lists(user1_friend_lst, user2_friend_lst as described in c) calc_similarity_scores(network)) (edit 3/7: fixed

More information

Assignment 4. Overview. Prof. Stewart Weiss. CSci 335 Software Design and Analysis III Assignment 4

Assignment 4. Overview. Prof. Stewart Weiss. CSci 335 Software Design and Analysis III Assignment 4 Overview This assignment combines several dierent data abstractions and algorithms that we have covered in class, including priority queues, on-line disjoint set operations, hashing, and sorting. The project

More information

1. Introduction. 2. Deliverables

1. Introduction. 2. Deliverables 16.216: ECE Application Programming Summer 2014 Programming Assignment #10: Doubly-Linked Lists Due Friday, 6/27/14, 12:00 PM (noon) NO LATE ASSIGNMENTS 1. Introduction This assignment deals with the combination

More information

ECE2049 Embedded Computing in Engineering Design. Lab #0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio

ECE2049 Embedded Computing in Engineering Design. Lab #0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio ECE2049 Embedded Computing in Engineering Design Lab #0 Introduction to the MSP430F5529 Launchpad-based Lab Board and Code Composer Studio In this lab you will be introduced to the Code Composer Studio

More information

CS 211 Winter 2004 Sample Final Exam (Solutions)

CS 211 Winter 2004 Sample Final Exam (Solutions) CS 211 Winter 2004 Sample Final Exam (Solutions) Instructor: Brian Dennis, Assistant Professor TAs: Tom Lechner, Rachel Goldsborough, Bin Lin March 16, 2004 Your Name: There are 6 problems on this exam.

More information

Overview of Project V Buffer Manager. Steps of Phase II

Overview of Project V Buffer Manager. Steps of Phase II Buffer Manager: Project V Assignment UC Berkeley Computer Science 186 Fall 2002 Introduction to Database Systems November 15, 2002 Due Tuesday, December 3, 2003 5PM Overview of Project V Buffer Manager

More information

ASSIGNMENT 5 Objects, Files, and a Music Player

ASSIGNMENT 5 Objects, Files, and a Music Player ASSIGNMENT 5 Objects, Files, and a Music Player COMP-202A, Fall 2009, All Sections Due: Thursday, December 3, 2009 (23:55) You MUST do this assignment individually and, unless otherwise specified, you

More information

EECS 560 Lab 6: Min 3-Heap and Performance Analysis of Operations

EECS 560 Lab 6: Min 3-Heap and Performance Analysis of Operations EECS 560 Lab 6: Min 3-Heap and Performance Analysis of Operations Apoorv Ingle, Prof. Shontz Fall 2017 1 Lab Details Maximum Possible Points: 70 Lab Timings: 1. Monday Lab: Oct 2, 9:00 AM 10:50 AM 2. Wednesday

More information

You must pass the final exam to pass the course.

You must pass the final exam to pass the course. Computer Science Technology Department Houston Community College System Department Website: http://csci.hccs.cc.tx.us CRN: 46876 978-1-4239-0146-4 1-4239-0146-0 Semester: Fall 2010 Campus and Room: Stafford

More information

CMSC 201 Spring 2019 Lab 06 Lists

CMSC 201 Spring 2019 Lab 06 Lists CMSC 201 Spring 2019 Lab 06 Lists Assignment: Lab 06 Lists Due Date: Thursday, March 7th by 11:59:59 PM Value: 10 points This week s lab will put into practice the concepts you learned about lists: indexing,

More information

EECS 560 Lab 9: Leftist Heap vs Skew Heap

EECS 560 Lab 9: Leftist Heap vs Skew Heap EECS 560 Lab 9: Leftist Heap vs Skew Heap Apoorv Ingle, Prof. Shontz Fall 2017 1 Lab Details Maximum Possible Points: 50 Lab Timings: 1. Monday Lab: Oct 30, 9:00 AM 10:50 AM 2. Wednesday Lab: Nov 1, 12:00

More information