Programming Fundamentals (COSC2531) Assignment 2 Solved

75.00 $

Description

5/5 - (5 votes)

                1. Overview

The main objective of this assignment is to familiarize you with object-oriented design and programming. Object-oriented programming helps to solve complex problems by coming up with a number of domain classes and associations. However, identifying meaningful classes and interactions requires a fair amount of design experience. Such experience cannot be gained by classroom-based teaching alone but must be gained through project experience. This assignment is designed to introduce different concepts such as inheritance, method overriding, and polymorphism.

 

You should develop this assignment in an iterative fashion (as opposed to completing it in one sitting). You can and should get started now (when this assignment specification is posted on Canvas) as there are concepts from previous lessons that you can employ to do this assignment. If there are questions, you can ask via the lectorial, practical sessions or the Canvas discussion forum (Canvas/Discussions/Discussion on Assessment 2). Note that the Canvas discussion forum is preferable as it allows other students to see your questions as well. Also, you should ask questions in a general manner, for example, you should replicate your problem in a different context in isolation before posting, and you must not post your code on the Canvas discussion forum.

Problem Overview: In this assignment, you are developing a movie ticketing system as in Assignment 1 using the object-oriented programming (OOP) paradigm. Same as in Assignment 1, the box office cashiers or managers from a cinema are the ones that use this system to process customers’ bookings. You are required to implement the program following the below requirements. Note the requirements in this assignment are sometimes slightly different and more complex compared to those in Assignment 1. Also, we will provide you with some sample .txt files (download on Canvas), but you should change the data in these files to test your program as during the marking, we will use different text files to test your program.

 

Requirements: Your code must meet the following functionalities, code, and documentation requirements. Your submission will be graded based on the rubric published on Canvas. Please ensure you read all the requirements and the rubric carefully before working on your assignment.

 

A – Functionalities Requirements: 

There are 4 levels, please ensure you only attempt one level after completing the previous level. ——————————————- PASS Level (12 marks) ——————————————

At this level, your program will have some basic classes with specifications as below. You may need to define methods wherever appropriate to support these classes. At the end of the PASS level, your program should be able to run with a menu described in the class Operations.

 

Customers:

1. Class Customer

Each customer has a unique ID, unique name (a name will not include any digit nor white space). You are required to write the class named Customer to support the following:

  1. Attributes ID and name
  2. Constructor takes the values of ID, name as arguments
  • Appropriate getter methods for the attributes of this class
  1. A method get_discount(self, cost) which takes the ticket cost and returns 0.
  2. A method get_booking_fee(self, ticket_quantity) which takes the ticket quantity and returns the booking fee. The booking fee is fixed at 2$ per each ticket.
  3. A method display_info(self) that prints the values of the Customer

 

2. Class RewardFlatCustomer

RewardFlat customers are customers that are in the rewards program and have a flat discount rate when purchasing tickets. All RewardFlat customers will have the same discount rate. The class RewardFlatCustomer should have the following components:

  1. An attribute for the discount rate, by default it is 20%.
  2. Constructor takes the appropriate parameters/arguments (be careful)
  • Appropriate getter methods for the attributes of this class
  1. A method get_discount(self, cost) which takes the ticket cost and returns the discount. For example, this method returns 20 when the discount rate is 20% and the ticket cost is 100$.
  2. A method display_info(self) that prints the values of the RewardFlatCustomer vi. A method set_discount_rate to adjust the discount rate. This affects all RewardFlat customers.

 

3. Class RewardStepCustomer

RewardStep customers are customers that are in the rewards program and have a different discount rate structure. In particular, the RewardStep customers only receive a discount if they spend equal to or more than a threshold. For example, if the threshold is 50$, then when the RewardStep customer named Mary purchases tickets that cost 60$, the discount will be applied; when Mary only spends 40$, then there will be no discount.

 

The discount rate might be different among the RewardStep customers. If not specified, the discount rate is set as 30%. In contrast, the threshold applies to all RewardStep customers, i.e., all RewardStep customers have the same threshold. The default threshold is 50$.

 

The class RewardStepCustomer should have the following components:

  1. Constructor takes the appropriate parameters/arguments (be careful) ii. Appropriate getter methods for the attributes of this class

iii. A method get_discount(self, cost) which takes the ticket cost and returns the discount offered. iv. A method display_info(self) that prints the values of the RewardStepCustomer attributes.

  1. A method set_discount_rate to adjust the discount rate of each individual RewardStep customer.
  2. A method set_threshold to adjust the threshold limit. This affects all RewardStep customers.

 

Movies:

4. Class Movie

This class is to keep track of information on different movies that the cinema offers. This class supports the following information:

  • ID: a unique identifier of the movie
  • name: the name of the movie (you can assume the movie names are unique and they do not include any digit)
  • seat_available: the number of available seats for the movie
  • A method display_info that prints the values of the Movie
  • Extra attributes and methods if you want to define.

 

Tickets:

5. Class Ticket

This class is to keep track of information on different ticket types that the cinema offers. This class supports the following information:

  • ID: a unique identifier of the ticket type
  • name: the ticket type (you can assume the ticket types are unique and they do not include any digit)
  • price: the price corresponding to the ticket type
  • A method display_info that prints the values of the Ticket
  • Extra attributes and methods if you want to define.

 

Bookings

6. Class Booking

This class is to store a customer’s booking information. This class supports the following information of a booking:

  • customer: the one who purchases the tickets (can be a customer, RewardFlat customer, or RewardStep customer). You need to think/analyse carefully if this should be an ID, name, or something else.
  • movie: the movie the customer chooses. You need to think/analyse carefully if this should be an ID, name, or something else.
  • ticket: the ticket type that the customer chooses. You need to think/analyse carefully if this should be an ID, name, or something else.
  • quantity: the quantity of the ticket ordered by the customer.
  • A method compute_cost that returns the ticket cost (the ticket cost without the discount and booking fee), the booking fee, and the discount. For example, if the order is of the customer Tom (RewardFlat customer with discount rate 20%), and the movie chosen is Avatar, ticket type is adult (unit price: 25.0) and quantity 2, then this method will return (50, 4, 10).
  • Extra attributes and methods if you want to define.

Records

7. Class Records

This class is the central data repository of your program. It supports the following information:

  • a list of existing customers – you need to think what you should store in this list (customer ID, customer name, or something else?)
  • a list of existing movies the cinema offers – you need to think about what you should store in this list (movie ID, movie name, or something else?)
  • a list of existing ticket types that the cinema offers – you need to think about what you should store in this list (ticket type ID, ticket type’s name, or something else?)
  • This class has a method named read_customers. This method takes in a file name and then read and add the customers in this file to the customer list of the class. In the sequel, we call this the customer file. See an example of the customer file below.

 

In this file, the customers are always in this format: customer_ID, customer_name, discount_value (if that is a RewardFlat/RewardStep customer), threshold (if that is a RewardStep customer). For example, in the 1st line, the customer_ID is C1, the name is Olivia. In the 3rd line, the customer_ID is S3, the name is George, the discount is 0.3 (i.e., 30%), and the threshold is 50. A normal customer has ID starting with the letter C. A RewardFlat customer has the ID starting with the letter F. A RewardStep customer has ID starting with the letter S. The numbers in the ID after these characters (C, F, S) are all unique (i.e., 1, 2, 3, 5… are unique). In this part, you can assume there will be no error in this customer file (e.g., the data format is always correct, and the discount values and thresholds are always valid).

  • This class has another method named read_movies. This method takes in a file name and can read and add the movies stored in that file to the movie list of the class. In the sequel, we call this the movie file. See an example of the movie file below.

 

In this file, the movies are always in this format: movie_ID, movie_name, number_available_seats. The movie ID always starts with the letter M. The movie IDs and names are all unique. You can assume there will be no error in this file (e.g., the data format is always correct, and the values are always valid).

  • This class has another method named read_tickets. This method takes in a file name and can read and add the ticket types stored in that file to the ticket type list of the class. In the sequel, we call this the ticket file. See an example of the ticket file below.

 

In this file, the data are always in this format: ticket_ID, ticket_name, ticket_unit_price. The ticket ID always starts with the letter T. The IDs and the names are all unique. You can assume there will be no error in this file (e.g., the data format is always correct, and the prices are always valid).

  • This class also has three methods find_customer, find_movie, and find_ticket. These methods take in a search value (can be either a name or an ID of a customer, movie, or ticket type), search through the list of customers/movies/ticket types and then return the corresponding customer, movie, ticket type if found or return None if not found.
  • This class also has three methods display_customers, display_movies, and display_tickets. These three methods can display the information of existing customers, movies, and ticket types on screen. The method display_customers will display the customer ID, name, the discount rate (only for RewardFlat/RewardStep customers), and the threshold (only for RewardStep customers). The method display_movies will display the movie ID, name, and the number of available seats. The method display_tickets will display the ticket type ID, name, and the unit price. Note the three methods can be used to validate the reading from the three .txt files associated with the customers, movies, and ticket types.

 

NOTE you are allowed to add extra attributes and methods in this class if these attributes and methods make your program more efficient.

 

Operations

8. Class Operations

This can be considered the main class of your program. It supports a menu with the following options:

  1. Purchase a ticket: this option allows users to purchase a ticket for a customer. Detailed requirements for this option are below (Requirements vii-ix).
  2. Display existing customers’ information: this option can display all the information of all existing customers: ID, name, discount rate (only for RewardFlat/RewardStep customers), and threshold (only for RewardStep customers).
  • Display existing movies’ information: this option can display all the information of all existing movies: ID, name, and the number of available seats.
  1. Display existing ticket types’ information: this option can display all the information of all ticket types: ID, name, and the unit price.
  2. Exit the program: this option allows users to exit the program.

Other requirements of the menu program are as follows:

  1. When the program starts, it looks for the files txt (the customer file), movies.txt (the movie file), and tickets.txt (the ticket file) in the local directory (the directory that stores the .py file of the program). If found, the data will be read into the program accordingly, the program will then display a menu with the 5 options described above. If any file is missing, the program will quit gracefully with an error message indicating the corresponding file is missing.
  • Your menu program will allow the user to purchase a ticket as specified in PART 1 of Assignment 1. Note that in this assignment, the customer can choose to register for the rewards program as a RewardFlat or a RewardStep customer. More detailed information regarding the registration for the rewards program is in section viii below. In this part, like in PART 1 of Assignment 1, you can assume users always enter valid movies, valid ticket types, valid ticket quantities, and valid “y” or “n” You can also assume users always enter the status for the rewards program accurately, for example, “F” for a RewardFlat customer registration, and “S” for a RewardStep customer registration.
  • When a customer finishes purchasing a ticket,
    1. If the customer is a new customer, the program will add the information of that customer into the data collection (think/analyse carefully which information needs to be added). If the customer answers “n” for the question of registering for the rewards program, then the customer is just a standard customer. If the customer answers “y”, then the program will ask what type of rewards they want. If the answer is “F”, then the customer will become a RewardFlat customer. If the answer is “S”, then the customer will become a RewardStep customer. The discount is applied immediately after the rewards program registration. Again, in this level, you can assume the users enter the rewards type correctly (“F” or “S“).
    2. If the customer is an existing customer, the program will print out a message showing the customer type (e.g., standard/RewardFlat/RewardStep customer), then proceed with the purchase and display the receipt. Also, for existing customers, you DO NOT need to ask if they want to register for the rewards program. This is slightly different compared to the requirements in Assignment 1, so please be careful.
  1. The total cost of a booking can be displayed as a formatted message as below.

——————————————————————————

Receipt of <customer_name>

——————————————————————————

Movie:                                                                 <movie_name>

Ticket type:                                                          <ticket_type>

Ticket unit price:                                       <ticket_unit_price>

Ticket quantity:                                           <ticket_quantity>

——————————————————————————

Discount:                                                           <discount_fee>

Booking fee:                                                       <booking_fee>

Total cost:                                                              <total_cost>

 

  1. When a task is accomplished, the menu will appear again for the next task. The program always exits gracefully from the menu.

 

———- CREDIT level (4 marks, please do not attempt this level before completing the PASS level) ————

Operations

At this level, your program needs to handle exceptions compared to the PASS level. At this level, you are required to define various custom exceptions to handle the below issues:

  1. Display an error message if the movie entered by the user is not a valid movie or the movie is sold out (0 available seats). When this error occurs, the user will be given another chance, until a valid movie is entered.
  2. Display an error message if the ticket type entered by the user is not a valid ticket type. When this error occurs, the user will be given another chance, until a valid ticket type is entered.
  3. Display an error message if the ticket quantity is 0, negative, not an integer, or exceed the number of available seats. When this error occurs, the user will be given another chance, until a valid quantity is entered.
  4. Display an error message if the answer by the user is not y or n when asking if the customer wants to join the rewards program. When this error occurs, the user will be given another chance, until a valid answer (i.e., y, n) is entered.
  5. Display an error message if the answer by the user is not F or S when asking the type of the rewards program. When this error occurs, the user will be given another chance, until a valid answer (i.e., F, S) is entered.

Besides,

  1. In this level, in the “Purchase a ticket” option, your program will allow ordering a group ticket, which is a ticket set that contains multiple tickets. For example, a group ticket can consist of two adult tickets and one child ticket. You can assume all components of a Group ticket are existing ticket types in the program.

 

The price of a Group ticket is 80% of the total price of all component tickets. For example, if a Group ticket consists of two adult tickets and one child ticket, and if an adult ticket costs 25.0$, a child ticket costs 19.5$, then the price of this Group ticket is 0.8 x (25.0 x 2 + 19.5) =

55.6$. Note the price of each Group ticket needs to be equal to or more than 50$.

 

To support this feature, you need to add one more class named GroupTicketto your program.

 

  1. Class GroupTicket: Each group ticket has a unique ID and name (as with Ticket). You need to define the appropriate attributes and methods to support the class GroupTicket. With this modification, the ticket file at this level may look like in the next page.

The type of a Group ticket is indicated with the letter G in the ID. Note that the data format of a Group ticket is different compared to a normal ticket type. Its format is as follows: group_ticket_ID, group_ticket_name, ticket_1, quantity_1, ticket_2, quantity_2 … The IDs/names of all ticket types (including the group ticket types) are all unique. The components of a group ticket can be shown as names or IDs. In the below example, the group ticket Family3 consists of one adult ticket and two child tickets. You can assume all the ticket types in a group ticket are existing ticket types and unique (no duplicates). You can assume group tickets are always stored at the end of a file, after all normal ticket types. You can assume the ticket types’ names never have any commas in the middle.

 

 

NOTE that as each group ticket needs to cost equal to or more than 50$, so when your program reads a group ticket from the ticket file, and if it does not satisfy this requirement, it will display a message saying something wrong with this group ticket and ignore it. Note your program still processes other tickets/group tickets in the file as normal.

 

  1. At this level, for the option “Display existing ticket types’ information“, when displaying the group tickets, your program will display the ID, name of the group ticket, and the price. On the other hand, the information of the standard ticket types is the same as in the PASS level. At this level, your program should support both customers’ IDs and names when purchasing a ticket. That is, your program will let users to enter either their IDs or their names. Your program should also support the movies’ IDs and names, and tickets’ IDs and names when purchasing a ticket.

 

———- DI Level (3 marks, please do not attempt this level before completing the CREDIT level) ———–

In this level, there are some additional main features for some classes in your program. Some features might be challenging. Details of these features are described as follows.

Operations

Your program now has the following new features.

  1. In this level, in the “Purchase a ticket” option, your program will allow customers to purchase multiple ticket types in one booking. The requirements are as in Assignment 1 for this option (requirement 1 of Part 3). You can modify the existing classes or design extra classes to support this requirement.
  2. Your program now has an option “Add movies” to add movies. The specification is same as Assignment 1 for this option (requirement 2 in Part 2).
  • Your program now has an option “Adjust the discount rate of all RewardFlat customers” to adjust the discount rate of all RewardFlat customers. This adjustment will affect all RewardFlat customers in all future orders. Invalid inputs (non-number or 0 or negative rate) should be handled via exceptions; the user will be given another chance until a valid input is entered. Your program now has an option “Adjust the discount rate of a RewardStep customer”. The option will ask for the name or ID of the RewardStep customer, then ask for a new discount rate (e.g., 0.2 which corresponds to 20% discount rate). Invalid customers (non-existent or nonRewardStep customers) needs to be handled, i.e., your program will give the user another

 

chance until a valid RewardStep customer is entered. Invalid inputs (non-number or 0 or negative values) should also be handled via exceptions, and the user will be given another chance until a valid input is entered. Also, your program should support both customers’ IDs and names in this option, i.e., users can type either the customer’s name or the ID.

  1. Note, in this part, you need to analyse the requirements and update some classes so that your program can satisfy the requirements listed above.

 

————- HD level (5 marks, please do not attempt this level before completing the DI level) ————–

At this level, there are some additional features for some classes in your program. Note that some of them are very challenging (require you to optimize the class design and add components to support the features). Your program now will have the following features.

  1. The program now can automatically load the previous bookings which are stored in a comma separated file named txt that is located in the same directory with the .py file. In the sequel, we will call this the booking file. Below is an example of the booking file:

 

Each line in the booking file is the information of a booking. The format is: customer_name/ID, movie_name/ID,  ticket_type_name/ID, ticket_quantity, ticket_type_name/ID, ticket_quantity …, discount, booking_fee, total_cost. You can assume all the customers in the booking file are existing customers (they are in the customer file). You can assume all movies in the booking file are existing movies (they are in the movie file). You can assume all ticket types in the booking file are existing ticket types (they are in the ticket file). The tickets can be normal tickets or group tickets. You can assume the ticket types are all distinguished. Customers, movies, and ticket types can be referred by IDs or names in this booking file. You can assume all other information (quantity, discount, booking fee, total cost) in this booking file is always valid, and the file entered by the user is always in the same directory with the .py file.

Note that errors when loading the booking file should also be handled. When there are any errors loading the file, your program will print a message saying “Cannot load the booking file, run as if there is no previous booking file“.

  1. Your program now has an option “Display all bookings” to display all bookings’ information including the customer’s name, movie’s name, ticket types, ticket quantities, discount, booking fee, total cost. The printed message is flexible.
  • The program now can use command line arguments to accept four file names (the first being the customer file name, the second being the movie file name, the third being the ticket file name, and the fourth being the booking file). The first three files are mandatory, the fourth file is optional (i.e., if the booking file is not supplied, the program runs as if there was no previous bookings). If no file names are provided, your program will look for txt, movies.txt, tickets.txt, and bookings.txt in the local directory. If a wrong number of arguments is provided, the program will display a message indicating the correct usage of arguments and exit.
  1. The menu now has an option “Display the most popular movie” to display the movie with the maximum money (total cost) purchased by users to date and the amount of money it was purchased. If there are multiple movies with the same maximum money purchased, you can display only one movie or all movies, it’s your choice.
  2. Your program will now have an option “Display all movie record”. The option will display a table displaying all the previous purchases of all movies, including the ticket types and the quantity for each ticket type they purchased and the total cost (including all the fees). An example table is as follows.

                   adult     child      senior          student concession Family3 …              Revenue

Titanic          12          3            8            10                4                 0             …          720.5

Avatar          15          7            5            14                6                 2             …           924.6

StarWar        14          8            6            11                5                 3             …           860.8

 

  1. When your program terminates, it will update the three files: customers, movies, and bookings, based on the information when the program executes.

 

B – Code Requirements:

The program must be entirely in one Python file named ProgFunA2_<Your Student ID>.py. For example, if your student ID is s1234567, then the Python file must be named ProgFunA2_s1234567.py. Other names will not be accepted.

 

Your code needs to be formatted consistently. You must not include any unused/irrelevant code. What you submitted must be considered as the final product.

 

You should use appropriate data types and handle user inputs properly. You must not have any redundant parts in your code.

 

You must demonstrate your ability to program in Python by yourself, i.e., you should not attempt to use external special Python packages/libraries/classes that can do most of the coding for you. The only Python libraries allowed in this assignment are sys and os.

 

Note that in places where this specification may not tell you how exactly you should implement a certain feature, you need to use your judgment to choose and apply the most appropriate concepts from our course materials. You should follow answers given by your “client” (or “supervisor” or the teaching team) under Canvas/Discussions/Discussion on Assessment 2.

 

  • – Documentation Requirements:

You are required to write comments (documentation) as a part of your code. Writing documentation is a good habit in professional programming. It is particularly useful if the documentation is next to the code segment that it refers to. NOTE that you don’t need to write an essay, i.e., you should keep the documentation succinct.

Your comments (documentation) should be in the same Python file. Please DO NOT write a separate file for comments (documentation).

At the beginning of your Python file, your code must contain the following information:

  1. Your name and student ID.
  2. The highest level you have attempted.This means you have completed all the requirements of the levels below.
  3. Any problems of your code and requirements that your program has not met. For example, scenarios that might cause the program to crash or behave abnormally, requirements your program does not satisfy. Note that you don’t need to handle errors that are not covered in the course.

Besides, the comments (documentation) in this assignment should serve the following purposes:

  • Explain your code in a precise but succinct manner. It should include a brief analysis of your approaches instead of simply translating the Python code to English. For example, you can comment on why you introduce a particular function/method, why you choose to use a while loop instead of other loops, why you choose a particular data type to store the data information. These comments can be placed before the code blocks (e.g., functions/methods, loops, if) and important variable declarations that the comments refer to.
  • Document some analysis/reflection as a part of your code. Here, you need to write some paragraphs (could be placed at the end or at the beginning of your code) to explain in detail your design process, e.g., how you came up with the design of the program, how you started writing the code after the design process, the challenges you met during the code development.
  • Document the references, i.e., any sources of information (e.g., websites, tools) you used other than the course contents directly under Canvas/Modules, you must give acknowledgement of the sources, explaining how you use the sources in this assignment. More detailed information regarding the references can be found in Section 7.

 

  • – Rubric:

Overall:

 

Level Points
PASS level 12
CREDIT level 4
DI level 3
HD level 5
Others (code quality, modularity, comments) 3
Others (weekly submission) 3

 

More details of the rubric of this assignment can be found on Canvas (here). Students are required to look at the rubric to understand how the assignment will be graded.

              5. Example Program

We demonstrate a sample program that satisfies the requirements specified in Section 4. Note that this is just an example, so it is okay if your program looks slightly different, but you need to make sure that your program satisfies the requirements listed in Section 4.

 

5.1. PASS Level

As an example, this is how the output screen of our sample program looks like for the PASS level, when we choose option 1, which is to purchase tickets with a customer named Huong, purchasing 2 adult tickets, and registering for the rewards program as a RewardFlat customer. You should test your program with different test cases, e.g., when customers choose n (no) for the rewards program registration option or when customers choose the RewardStep option, to make sure your program satisfy the requirements of this level. Note that here, the program is implemented with the objectoriented paradigm and the classes described in the PASS level of Section 4.

 

 

 

5.2. CREDIT Level

As an example, this is what the output screen of our sample program looks like for the CREDIT level, when we choose option 1, which is to purchase tickets with a customer named Huong, ordering 1 Friend4 group ticket and registering as a RewardStep customer. Here, we also test if the program can handle some types of invalid inputs. You should test your program with different test cases to make sure your program satisfies all the requirements of this level.

 

Besides, you should notice that at the beginning, there is a message displaying “Group ticket G11 is not valid! The price of a group ticket type needs to be equal to or higher than 50!” as the ticket type G11 (Test) in the ticket file has only two adult tickets, making its price to be 0.8 x (25.0 x 2) = 40, thus, this ticket type is invalid.

 

5.3. DI Level

As an example, this is what the output screen of our sample program looks like for the DI level, when we choose option 5 to add movies. After that, we choose option 3 to display all movies to check if the program successfully adds movies to the program. It shows that the program indeed adds movies successfully.

 

Note that you should test your program with different test cases to make sure your program satisfies all the requirements of this level.

5.3. HD Level

As an example, this is what the output screen of our sample program looks like for the HD level, when the program takes command line arguments, and we pass 4 text files.

 

Below is what the program looks like when we choose option 8 to display all bookings and option 10 to display all movie record. Note that you should test your program with different test cases to make sure your program satisfies all the requirements of this level.

              6. Submission

As mentioned in the Code Requirements, you must submit only one file named ProgFunA2_<Your Student ID>.py via Canvas/Assignments/Assignment 2. It is your responsibility to correctly submit your file. Please verify that your submission is correctly submitted by downloading what you have submitted to see if the file includes the correct contents. The final .py file submitted is the one that will be marked.

 

Special Consideration

If you are applying for extensions for your assessment within five working days after the original assessment date or due date has passed, or if you are seeking extension for more than seven days, you will have to apply for Special Consideration, unless there are special instructions on your Equitable Learning Plan.

 

In most cases you can apply for special consideration online here. For more information on special consideration, visit the university website on special consideration here.

              7. Referencing Guidelines

What: This is an individual assignment, and all submitted contents must be your own. If you have used any sources of information (e.g., websites, tools) other than the course contents directly under Canvas/Modules, you must give acknowledgement of the sources, explaining in detail how you use the sources in this assignment, and give references using the IEEE referencing format.

 

Where: You can add a code comment near the work (e.g., code block) to be referenced and include the detailed reference in the IEEE style.

 

How: To generate a valid IEEE style reference, please use the citethisforme tool if you’re unfamiliar with this style.

 

 

  • pass-level-je3dok.zip
  • Credit-Level-ysrbkd.zip
  • DI-Level-mhoj9r.zip