logo Hurry, Grab up to 30% discount on the entire course
Order Now logo

Ask This Question To Be Solved By Our ExpertsGet A+ Grade Solution Guaranteed

expert
Lesley RobertsGeneral article writing
(5/5)

719 Answers

Hire Me
expert
Cooper EllissFinance
(5/5)

979 Answers

Hire Me
expert
Anna CarolyanLaw
(5/5)

848 Answers

Hire Me
expert
Thaissa LannesLaw
(5/5)

787 Answers

Hire Me
C++ Programming

Obligations are fundamental rules shared by all subjects. They are non-negotiable and to not apply them means to face sanctions. Therefore, do not hesitate to ask for explanations if you do not understand one of these rule

INSTRUCTIONS TO CANDIDATES
ANSWER ALL QUESTIONS

Obligations

Obligations are fundamental rules shared by all subjects. They are non-negotiable and to not apply them means to face sanctions. Therefore, do not hesitate to ask for explanations if you do not under- stand one of these rules. 

Obligation #0: Cheating, as well as sharing source code, tests, test tools or coding-style correction tools is strictly forbidden and penalized by not being graded, being flagged as a cheater and reported to the academic staff.

Obligation #1: If you do not submit your work before the deadline, it will not be graded.

Obligation #2: Your submission repository must be clean. Except for special cases, which (if any) are

explicitely mentioned in this document, an unclean repository may contain:

  • binary files;1

  • files with inappropriate privileges;

  • forbidden files: *~, *.swp, *.o, *.a, *.so, *.class, *.log, *.core, ;

  • a file tree that does not follow our specifications (see ??). Obligation #3: All your files must be encoded in ASCII or UTF-8 without

Obligation #4: When examples demonstrate the use of an output format, you must follow it scrupu- lously.

Obligation #5: Your code must compile with the flags:

|CFLAGS|

Advice

▷ Read the whole subject.

▷ If the slightest project-related problem arise, you can get in touch with the assistants.

Post to the dedicated newsgroup (with the appropriate tag) for questions about this document, or send a ticket to <assistants@tickets.assistants.epita.fr> otherwise.

▷ In examples, 42sh$ is our prompt: use it as a reference point.

▷ Do not wait for the last minute to start your project!

1If an executable file is required, please provide its sources only. We will compile it ourselves.

Project data

Instructors:

 

Dedicated newsgroup:

assistants.projets with [BIS]

Members per team:

 

1     LibBistro

 

Files to submit:

  • ./src/bignum.hh

  • ./src/base.hh

  • ./src/ast-node.hh

  • ./src/ast-factory.hh

  • ./src/main.cc

  • ./src/scan-bistro.ll

  • ./src/parse-bistro.yy

  • ./src/parse-driver.hh

  • ./src/parse-driver.cc

  • ./src/*

Provided files:

  • ./src/bignum.hh

  • ./src/base.hh

  • ./src/ast-node.hh

 

  • ./src/ast-factory.hh

  • ./src/main.cc

  • ./src/scan-bistro.ll

  • ./src/parse-bistro.yy

  • ./src/parse-driver.hh

  • ./src/parse-driver.cc

  • ./libbistro-example.cc

  • ./Makefile

2     Instructions

 

LibBistro is a new implementation of the legendary Bistromathique project of EPITA. It is an amazing project that will test your skills in C++ and optimization. It is also the perfect opportunity to make use of the knowledge and skills you learned during this week.

Read through the whole subject before starting, to have a better idea of what is expected of you.

3     Description

3.1  Introduction

 

From the original Bistromathique (Hitchhiker’s Guide to the Galaxy):

The Bistromathique Drive is a wonderful new method of crossing vast interstellar distances without all that dangerous mucking about with Improbability Factors.

Bistromathique itself is simply a revolutionary new way of understanding the behaviour  of numbers. Just as Einstein observed that time was not absolute but depended on the observer’s movement in space, and that space was not absolute, but depended on the ob- server’s movement in time, so it is now realized that numbers are not absolute, but depend on the observer’s movement in restaurants.

The first non-absolute number is the number of people for whom the table is reserved. This will vary during the course of the first three telephone calls to the restaurant, and then bear no apparent relation to the number of people who actually turn up, or to the number of people who subsequently join them after the show/match/party/gig, or to the number of people who leave when they see who else has turned up.

The second non-absolute number is the given time of arrival, which is now known to be one of the most bizarre of mathematical concepts, a recipriversexcluson, a number whose existence can only be defined as being anything other than itself. In other words, the given time of arrival is the one moment of time at which it is impossible that any member of the party will arrive. Recipriversexclusons now play a vital part in many branches of maths, including statistics and accountancy and also form the basic equations used to engineer the Somebody Else’s Problem field.

 

The third and most mysterious piece of non-absoluteness of all lies in the relationship between the number of items on the bill, the cost of each item, the number of people at the table, and what they are each prepared to pay for. (The number of people who have actually brought any money is only a sub-phenomenon in this field.)

 

3.2  Objective

 

You have to implement a library for integer arithmetic computation, in any base, with arbitrary precision (as many digits as necessary).

The main objective is to have the correct result.

Another objective is to have the correct result fast, however do keep in mind that performance comes second to correctness: it is ill-advised to start optimizing before the features work properly and are both thoroughly tested and well documented. There is no point in having only one feature, regardless of its optimization, especially if the given result is not always reliable.

The library is made to be as generic as possible; everything is templated. You will be provided with some headers, defining an interface. Your code must respect this interface, but also work with any class respecting this interface!

The goal of this project is to evaluate your C++ programming skills, and your assimilation of the notions seen this week. It will involve smart pointers, templates, containers, inheritance, overloading, etc…

 

3.3  What you must turn in

 

The first part of the project is the header-only library, entirely templated and generic. This is what will be most thoroughly tested, and this is where you must spend the most time.

However, there will also be a binary file to build, in order to test your project’s performance. This will be a specific use case of your library, and can make assumptions to enable further optimizations.

 

Related Questions

. The fundamental operations of create, read, update, and delete (CRUD) in either Python or Java

CS 340 Milestone One Guidelines and Rubric  Overview: For this assignment, you will implement the fundamental operations of create, read, update,

. Develop a program to emulate a purchase transaction at a retail store. This  program will have two classes, a LineItem class and a Transaction class

Retail Transaction Programming Project  Project Requirements:  Develop a program to emulate a purchase transaction at a retail store. This

. The following program contains five errors. Identify the errors and fix them

7COM1028   Secure Systems Programming   Referral Coursework: Secure

. Accepts the following from a user: Item Name Item Quantity Item Price Allows the user to create a file to store the sales receipt contents

Create a GUI program that:Accepts the following from a user:Item NameItem QuantityItem PriceAllows the user to create a file to store the sales receip

. The final project will encompass developing a web service using a software stack and implementing an industry-standard interface. Regardless of whether you choose to pursue application development goals as a pure developer or as a software engineer

CS 340 Final Project Guidelines and Rubric  Overview The final project will encompass developing a web service using a software stack and impleme