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:
DAMJAN STANISAVLJEVIC <damjan.stanisavljevic@assistants.epita.fr>
DAVID CHEN <david.chen@assistants.epita.fr>
LOÏC BELLONNET MOTTET <loic.bellonnet-mottet@assistants.epita.fr>
ANTOINE MARTIN <ma_9@assistants.epita.fr>
THOMAS CURTI <thomas.curti@assistants.epita.fr>
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.
CS 340 Milestone One Guidelines and Rubric Overview: For this assignment, you will implement the fundamental operations of create, read, update,
Retail Transaction Programming Project Project Requirements: Develop a program to emulate a purchase transaction at a retail store. This
7COM1028 Secure Systems Programming Referral Coursework: Secure
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
CS 340 Final Project Guidelines and Rubric Overview The final project will encompass developing a web service using a software stack and impleme