Giter Site home page Giter Site logo

maketest's Introduction

Computing Boot Camp Logo

BYU Computing Bootcamp - Make Tests

So you believe that you've mastered Make, do you? Well, it's time to prove it! Upon completion of this test, you will recieve the "Make Knowledge Badge" from the BYU Computing Bootcamp to attest of your knowledge and expertise. Here's a link to the badge on Badgr so that you can go admire it: Click here!

Make Badge

While completing this test, you are not allowed to copy paste code from another source. If you are unable to complete the test this way, go back and practice some more! We don't do this because we're mean, but rather because we can't attest to your knowledge unless you can do it on your own. This means that when you do complete the test, you will actually be an expert in Make, rather than someone who knows how to copy and paste from the Internet.

Don't worry if the test gives you trouble, you can take it as many times as you'd like. The repeated trials will help you solidify the concepts into your brain, training yourself to remember the most important parts of Make.

Setup

First, fork the repository to your user by pressing the fork button in the upper right hand corner. Then, you can clone the repository onto your computer with:

git clone https://github.com/<your_username>/makeTest.git

Now you are now ready to start coding! Start out by entering your email into the 'email.txt' file, so that we can properly give you your badge when you pass the test.

Problem 1 - Makefile1.txt

Write a Makefile that implements the following functionality. You'll store the contents of this Makefile at "MakeFiles/MakeFile1.txt". It should be very simple, and shouldn't use variables, automatic variables, pattern matching, or Makefile functions. It should have the following two rules:

tree:

This rule should be the first rule in the file. It should be called "tree", and it should generate an executable called "tree" with the g++ compiler. It should use 7 files to do so, including leaves.c, leaves.h, branches.c, branches.h, roots.c, roots.h, and main.c.

clean:

This rule should be called "clean", and it should remove the "tree" executable if there is one.

Problem 2 - Makefile2.txt

Write a Makefile that implements the following functionality. You'll store the contents of this Makefile at "MakeFiles/MakeFile2.txt". It will be complicated, and shouldn't have the words "main", "leaves", "Leaves", "roots", "Roots", "branches", or "Branches" anywhere in the file. It should have at least the following three rules:

$(TARGET):

This rule should be the first rule in the file. It should be called "$(TARGET)", and it should generate an executable called "tree" with the g++ compiler. It should use all of the .h and .c files found in the directory. Then, it should save the names of all the files that it used in a text file called "compiled.txt".

%.o:

This rule should be called "%.o", and uses pattern matching to generate all the necessary .o files for the $(TARGET) rule.

clean:

This rule should be called "clean", and should remove the tree executable, compiled.txt file, and the .o files.

Submitting

Once you've completed the problems, add, commit, and push your changes to the branch:

git add .
git commit -m <message>
git push origin main

Make sure that you put your email into the 'email.txt' file, or you won't recieve your badge if you pass.

Then, visit the repository on Github and open a pull request with our repository here, which is all you will need to do to pass-off your code. You won't need to merge your PR with the main repository or anything else. There is a workflow on the main repository that should run every 10 minutes: it will check your code, and close the pull request when its finished. So after a bit, check the Pull Request to see the results. It will have comments describing which parts of the test you passed.

If you passed...

Congradulations! You've passed the Make test, and you have been certified by the BYU Computing BootCamp to have "Make" Knowledge. You should recieve an email with your badge contained inside. The Pull Request has a comment with the email that the badge was sent to, so if you didn't recieve it, check to make sure you entered your email correctly. Show off the "Make" badge to potential employers, or use it with other Computing BootCamp badges to gain the "Software Development Knowledge" badge!

If you didn't pass...

Don't worry, you'll get there eventually! You probably just have a small mistake. You might have deleted or renamed one of the passoff files, forgot to implement a function, or missed a bug in your code! Whatever it is, you'll have to make a few changes to your code and try again. Check in the Pull Request to see which part of the passoff you failed at, and then try to duplicate the results on your local machine (by looking at the pass-off workflow files). Compare your output on your machine to the intended behaviour found in this README.md to find out what went wrong. When you think you're ready to resubmit, push the changes back onto your repository, and open a new Pull Request. The workflow will check it again when it runs.

Support

Need support, have questions, or think you've found a bug in the repository? Think you should have recieved a badge when you didn't, or that the checks are potentially broken? Reach out to [email protected], or open an issue here on GitHub.

maketest's People

Contributors

danielchasebutterfield avatar byucomputingbootcamptests avatar zephramtripp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.