Fill This Form To Receive Instant Help

Help in Homework
trustpilot ratings
google ratings


Homework answers / question archive / SCC110: Software Development Term 3

SCC110: Software Development Term 3

Psychology

SCC110: Software Development Term 3. Programming Project. Project Title: Programming Project Moodle Submission Deadline: 16:00 Friday Week 25 Assessment Mode: Continual Assessment via SCC110 Git Server Aims In this final term of your first year, there is a single task - a project that is designed to bring together many of the programming techniques that you have learned over the course of the year. This project represents the final piece of practical coursework for SCC110. It’s time to show us what you can do! You have a choice of projects to undertake, to be selected from the three choices below, and you need to pick just one of these projects. Read each of them carefully before choosing which project to undertake. Please note that the projects state which programming language you must use for that project (either C or Java). Getting Support We will be running online SCC110 lab sessions in weeks 21-25 inclusive. Use these sessions to get Individual one-on-one support sessions. Staff and teaching assistants will be present at these times to answer your questions via the SCC110 Microsoft Teams page. You should attend you timetabled session for support. If you feel you would benefit from attending other sessions, feel free to do so, but please do be considerate as staff will prioritise students in their own timetabled slot. Please note, teaching assistant time is necessarily limited so please avoid messaging them outside of timetabled lab hours without prior agreement. They are only paid for the hours they deliver labs and have their own jobs to do too. SCC110: Software Development Term 3. Programming Project. Version Control and Submission The use of git version control for your project is expected. As a special treat, you also get to act as guinea pigs from the University’s shiny new GitHub Enterprise Server! (GitHub enterprise is much the same as github.com but integrates into your company’s usernames and passwords). You can login to the server here using your Lancaster username/password: https://github.lancs.ac.uk/SCC-110 The first time you log in, you will likely not have access to the SCC-110 organization. However, overnight and 30 minutes into each lab session in Week 21, a script will automatically run that will add access to any SCC110 students that have logged in for the first time. Once you have full access to the SCC-110 organisation, create a private repository to hold your project work. Use the following template as the name of your repository so that we can easily find it: username-2021-project For example, my repository would be called: finneyj-2021-project. Once created, you can clone, add, commit and push to your repository – just as we saw in the lectures. The quality and timeliness of your commits will form part of your assessment, so remember: create your repository at the start of your project, commit regularly and push changes back to your server frequently so you always have a version controlled backup of your work. There will be significant penalties for students not using version control. This repository will also act as your formal point of submission. Ensure your repository is up to date by the deadline. Assessment This work will be assessed by a code review of your github repository. Teaching Assistants and staff may also ask you questions using github issues before and after project submission, so make sure you keep an eye on your repository and answer any questions that they raise. If you leave it to the last minute, staff won’t have the chance to ask questions during the term, and you will likely not receive marks associated with these questions. Do not leave this work to the last minute. You are also required to complete a short file called README.md in your repository that describes the capabilities of your program and precisely how to run it. This can be either a simple text file, or use markdown (a simple language for adding formatting into text files): https://www.markdownguide.org/getting-started/ SCC110: Software Development Term 3. Programming Project. To summarise: - You MUST maintain your work using the SCC110 git server. You MUST ensure that your repository is self-contained and can run on the SCC Ubuntu PC You MUST have a README.md file that describes how to compile and run your program. You MUST ensure that your project can be compiled FROM THE COMMAND LINE. Your marker WILL NOT be using an IDE such as Eclipse or IntelliJ to compile your program. If your marker cannot compile your program using the standard gcc/javac compilers on the command line, you will receive substantial penalty. FAILURE TO ADHERE TO THE ABOVE MAY RESULT IN A FAIL MARK (F4) BEING RECORDED. Marking Scheme Your work will be marked based on the following four categories. Your final grade will be determined based on a weighted mean of these grades according to the weighting shown in the table below. Project Functionality - See individual project descriptions below for indicative levels of the functionality expected. Code Structure and Elegance - Modularity of code - Use of appropriate data types and libraries - Use of appropriate language constructs (arrays, loops, functions, methods, classes) Code Style - Appropriate comments, code indentation - Appropriate name/scope of variables and functions / methods Communication - Quality of the README.md guide - Ability to answer any questions raised by TAs via git issues Use of GIT version control - Clean and regular commits - Appropriate commit messages 50% 20% 10% 10% 10% In all cases a grade descriptor (A, B, C, D, F) will be used to mark your work in each category. The following sections provide an indication of the level of functionality expected. Markers may also recommend the award of a distinction (+) category overall if they feel a piece of work exhibits clearly outstanding practice. SCC110: Software Development Term 3. Programming Project. Project Title: Language: Project 1: Asteroids C Asteroids was released in 1979 by Atari. The original game used a black and white vector display and featured a lone spaceship battling asteroids that threaten to crush it to oblivion. It became one of the early arcade classics (shown below). This deceptively simple game challenges the player to control a small spacecraft that may rotate clockwise or counterclockwise and move in the direction it’s facing under the influence of a simple physics model (momentum, thrust). Asteroids track across the space and wrap around the edges of the screen (exiting on the left and reappearing on the right, for example). The ship has a laser that it uses to blast the asteroids to pieces. But beware – when hit, the shards of asteroid rock split off in different directions; large asteroids fragment into several smaller ones, splitting into smaller, faster and harder to hit shards of rock. This deceptively simple game is surprisingly challenging! SCC110: Software Development Term 3. Programming Project. The aim of this project is to recreate your version of this classic on UNIX creatively using ASCII character graphics (e.g. on an 80x25 character terminal). The simplest version of the game will feature a ship, an approximation of an asteroid, keyboard controls for thrust and direction and a score. More advanced versions could include the game physics, the simulation of splitting rocks, multiple waves, enemy spaceships, etc. The exercise focuses on your ability to: • • • • • Solve the challenge of creating a simple game (game loop, score etc.); Exercise your problem-solving skills, especially in the simulation of the spaceship, the rocks and their physics; Work out algorithms to control the ship, simulate the rocks, detect collisions, perform the game logic; Generate a GUI for the user to interact with the ship (using ASCII art & the UNIX ncurses library) Demonstrate good code modularity and style. Start-up task: This task is to be completed in your Week 21 practical in order to give you a better feel for this project and to give you valuable insight for your design. 1. Visit the asteroids website and play the game a couple of times! https://games.aarp.org/games/atari-asteroids 2. Make notes on the features of the game you can see – pay particular attention to the phases of gameplay (start, middle, end). What happens when you run out of time, rocks, thrust over a screen edge, hyperspace etc.? 3. Read the introduction to the ncurses library (sections 1-1.3): http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/intro.html 4. Look back over term 1 and remind yourself of how to use visual code for C, compile C programs, and so on. 5. Try the ‘hello world’ example: http://tldp.org/HOWTO/NCURSES-ProgrammingHOWTO/helloworld.html - you’ll need to #include in your C file and compile using ‘-lncurses’ with gcc. Now try to create a C program that uses the ncurses library to let you control the position of a symbol (e.g. ‘*’) on the screen using keyboard input. Tips: lookup mvprintw, getch and timeout in the man pages/online. SCC110: Software Development Term 3. Programming Project. Marking Scheme: Marks will be awarded according to the marking scheme shown at the start of this document. Marks for the ‘Functionality’ section will be awarded based on individual merit, but the following table gives an indicative overview of the level of functionality expected for each grade band: A: Working program that meets the criteria for a B, plus: - Asteroids split when hit into smaller, faster asteroids that break off at realistic angles; - More points are awarded differentially for hitting different size asteroids; - Friction (the ship slows after initial thrust); - The player gets more than one ship/turn; - Advanced features, such as one or two of: - Hyperspace (the ship can jump to a random location not on an asteroid); - Progressing 'rounds' with increasing difficulty (more asteroids); - Others, e.g. splash screen, high score table, enemy space ship. B: Working program that meets the criteria for a C, plus: - Asteroids and the ship can move off the screen and appear (wrap) around the edges; - Asteroids appear at random and move (basic physics); - The user can 'fire' across the screen - Asteroids can be shot and disappear when hit. - score is awarded appropriately and displayed. C: Working program that meets the criteria for a D, plus: - At least one asteroid present on the screen - The ship can move (thrust) as well as rotate - Basic collision detection (the ship can be destroyed if it hits as asteroid) D: Working program that: - shows a representation of the space ship. - The player can rotate the ship using the keyboard. F: No working program demonstrated, or program does not meet any requirements listed above. SCC110: Software Development Term 3. Programming Project. Project Title: Language: Project 2: Carom Java Project Overview: Simulations are excellent ways to test your ability to implement programs to well-defined specifications… The aim of this project is to make use of an advanced version of the GameArena classes you used earlier this year to implement a simple graphical simulation of a traditional game called Carom. Carom is much like a board game version of pool, but with different rules. The game is for two players and is played on a square wooden board containing 9 light counters, 9 dark counters, a "Queen" counter (typically red), and a larger "Striker" counter (white), which is the equivalent to the cue ball in pool. The counters are initially set up around the centre of the board, as illustrated in the images below: Figure 3a: A Carom Board Figure 3b: Initial Configuration of Counters Project Requirements: Your task is to implement a simple but functional two player game of Carom based on the GameArena classes. In addition to drawing Balls and Rectangles, the latest version of the GameArena classes now include support for Lines, Text, mouse input, layering of objects and background images. This is available via my github repository at https://github.com/finneyj/GameArena. See the Javadoc documentation contained inside the repository for information on how to use these new features. SCC110: Software Development Term 3. Programming Project. Game Rules Carom is a turn-based game for two players. The players sit at opposite sides of the board and take it in turns to flick the Striker with their fingers. The first player to take a turn always aims to pot the white counters into the circular pockets on the board, whilst the second player aims to pot the black counters. The game ends when all the counters of one colour and the Queen have been potted. The specific rules of the game are as follows: ? ? ? ? ? ? ? ? On each player's turn, the player places the striker between the base lines (between the red circles on the board) and it is flicked across the board at the counters. If the player pots a piece (of the correct colour), the striker is replaced between the base lines and the player takes another turn. Otherwise, the striker is passed to the other player and placed between the opposing base lines. A player does not have to aim at his or her own colour. It is quite legitimate to hit a counter of another player's colour. The striker can be placed anywhere between the base lines, but not positioned such that it overlaps either of the red circles at the ends (it can be completely inside the red circles, completely outside the circles but not half way!). The counter can be flicked sideways or forwards at any angle, but it is not permitted to be flicked backwards towards the player. The game does not end until the Queen has been potted, by either player. Unlike pool, however, the Queen must not be the last counter potted. A player can only pot the Queen once they have potted at least one of their own pieces. Once the Queen is potted, the player must immediately pot one of their own colour, or the Queen will be removed from the pocket and placed as close as is possible to the centre of the table without overlapping another counter. Scoring The winner scores one point for each of their opponent's counters remaining on the board when the game ends, plus 5 points if they were the player to pot the Queen (the loser doesn't score anything for potting the Queen). If a player pots all their counters before the Queen is potted, they automatically lose the game by 5 points. A Carom match is usually played across multiple games, with players alternating to play first. The first player to reach 25 points wins the match. Fouls and Penalties Fouls occur if any of the following conditions are met: ? ? ? The Striker is potted. One of the opponent’s counters is potted. The Queen is potted before the player has potted one of their own counters. In each of these cases the penalty is the return of one of the player's potted pieces to the board. If the player has not yet potted a counter, the opposing player is given two consecutive turns instead. SCC110: Software Development Term 3. Programming Project. Handling Deflections To complete this project, you will need to determine how the counters move, and how their speed and direction changes when they impact each other. Algorithms to do this are known as Physics Engines and are a key part of many computer games platforms. The following equations describe a very simple physics engine that you might like to use. It calculates the speed and direction of two round objects as they collide. This will only work for two dimensional round objects… but that’s good enough for Carom! This might look a little scary at first, but really isn’t… especially when you notice the two equations are just the same operation: ? ? ? ? ? ? ? m Is the mass of an object (e.g. grams). The unit isn’t important as long as you’re consistent. v’, v and x are simple 2D vectors. i.e. a pair of numbers representing [x, y] values. v is the velocity of an object before the collision. For a velocity of [2, 2] would mean it was travelling right at a speed of 2 and downward at a speed of 2 (effectively travelling diagonally toward the bottom right corner of the screen). The bigger the number the faster it is going. Number can be negative to represent the opposite directions. x is the position of the centre of the object. So [45,76] would mean the centre of the object is located at x pixel 45 and y pixel 76 on the screen. v’ is the velocity of the object after collision (i.e. what you want to know!) The subscripts (1 and 2) relate to each of the objects. For example, x1 is the location of object one, v2 is the velocity of object two etc. The angled bracket notation < … > is something called a dot product of two vectors. This is a simple function: ??, ?? = ?? ?? + ?? ?? ? The double bars || … || is the magnitude of a vector (its length), which is just Pythagoras: ??? = √(?? ? + ?? ? ) If you have an interest in the theory like to know more about how and why the above calculation works, there’s a nice Wikipedia article here. SCC110: Software Development Term 3. Programming Project. Marking Scheme: Marks will be awarded according to the marking scheme shown at the start of this document. Marks for the ‘Functionality’ section will be awarded based on individual merit, but the following table gives an indicative overview of the level of functionality expected for each grade band: A: B: C: D: F: Working program that meets the criteria for a B, plus: - Implements a turn based, two player interface that shows the number of counters potted and a scoring system. - Detects fouls and acts accordingly. - Implements game rules, including those governing the initial placement of the striker and the Queen. - Detects the conclusion of the game. Working program that meets the criteria for a C, plus: - Initialises a board containing all the standard pieces for a Carom game as per the rules listed in this document. - Accurately models the movement of all pieces on the board, including collisions between pieces other than the striker. - Allows pieces to be potted. Working program that meets the criteria for a D, plus: - implements friction that slows down the movement of a counter over time. - detects when all counters have come to rest, replaces the Striker in the base lines and allows the player to take another turn. - implements at least one additional counter other than the Striker. - demonstrates some implementation of a deflection between the Striker and another piece Working program that: - allows the initial position, direction and speed of the Striker to be set by the user through a graphical user interface. - accurately models the movement of the Striker around a board. - shows a real-time visualization of this movement. - models deflections off the side of the board. No working program demonstrated, or program does not meet any requirements listed above. SCC110: Software Development Term 3. Programming Project. Project Title: Language: Project 3: The Hitchhiker’s Guide to Plagiarism Checking Either Java or C Project Overview: Throughout academia computerised plagiarism checkers are used to gather information about the originality of students’ work. This practice gives an indication of whether any of the work’s content has been taken from an external source (whether web-based or from another student) and provides that information in a form that the instructor can interpret. Your task is to create a simple plagiarism checker to check a group of text files against one another. Five text files (based on a section of The Hitchhiker’s Guide to the Galaxy by Douglas Adams) have been provided for you to check as examples. Your program should be capable of providing an analysis of the content of each file, and a measurement of similarity between each pair of files. These results should then be displayed in a user-friendly form, appropriate to the programming language you have chosen. The results can be text based such as generating HTML files that can be viewed within a web browser (though you should still make an effort to make the display as readable as possible). Alternatively, if you prefer, your results could be displayed on a graphical user interface. There are two commonly used metrics to determine similarity between two documents – word frequency and phrase matching. Together these can provide an effective indication of similarity. Word Frequency: Word frequency is simply a count of the number of occurrences of each and every unique word within a given document. This should exclude all punctuation and ignore any capitalisation and whitespace. For example, the word frequency analysis for two given sentences is shown below: Sentence 1: The Vogons destroyed the Earth. Sentence 2: Arthur Dent lived on the Earth. Sentence1 Sentence2 the 2 1 vogons 1 0 earth 1 1 destroyed 1 0 on 0 1 arthur 0 1 dent 0 1 lived 0 1 Table 1 - Example Word Frequency Analysis SCC110: Software Development Term 3. Programming Project. Phrase Matching: Word frequency analysis provides a simple indication on the individual words used in a set of documents but pays no attention to the ordering of them within a file. By considering their spatial proximity, we can also determine if those words are used in a similar way, hence have greater similarity. Phrase matching is the process of detecting a consecutive set of matched words within two given documents. The minimum length of a phrase to detect is user definable. The measure of similarity between two files can therefore be provided as a percentage match, given by: The number of phrase-matched words / The total number of words. As with word frequency analysis, capitalisation, punctuation and whitespace should be ignored. Ideally, the count of matched words should also exclude words that are contained within quote marks, as valid citations of an external reference. For example, given two sentences: Sentence 1: It is an important and popular fact that things are not always what they seem. Sentence 2: It is well recognised that things are not always what they seem. Phrase Match: 67% Results Visualisation: The results for each file should be displayed with a ranked list of other files according to their percentage match. For example, table 2 shows the results for file 1 (left) and file 2 (right). There should also be a list of the top overall matches, which can be seen in table 3. Pair File 1 – File 3 File 1 – File 4 File 1 – File 5 File 1 – File 2 Phrase Match (%) Pair 54 File 2 – File 4 31 File 2 – File 5 23 File 2 – File 3 12 File 2 – File 1 Table 2 Ranked list of matches for a given file Phrase Match (%) 43 29 14 12 Pair Phrase Match (%) File 1 – File 3 54 File 2 – File 4 43 File 1 – File 4 31 File 2 – File 5 29 Table 3 Ranked highest overall matches Selection of one of these pairs should provide the user with both the details of the phrase matching and the word frequency analysis. SCC110: Software Development Term 3. Programming Project. Project Requirements: - You should calculate the word frequency for each of the five documents provided. - You should display the word frequency result from a given pair of files side by side, and rank words according to frequency. - You should set the threshold for the number of consecutive words for a phrase match. - You should calculate the phrase match percentage for each pair of files using the given threshold. - You should be able to display results for each pair of files that include both word frequency and phrase match. - You should also provide a visualisation of the overall results. Guidance: ? Opening files and parsing strings… remember, much of the C work in the first term concentrated on opening files and manipulating strings, if you’re not sure where to start, those old exercises and the lecture notes are a great way to get going. Once you can read in files and recognise individual words you’re in a position to work on the rest, but not before. Remember string.h. Even if you’re working in Java, a quick look through your Term 1 C work is still a good idea, as the concepts are much the same. If you haven’t read from a file before in Java, try reading up on the BufferedReader class, this will allow you to read in from a file one line at a time. Similarly, it might also be a good idea to look up the StringTokenizer class. ? Think about your design… In C, your program might be improved (certainly simplified) using structs. Remember that structs are a lot like classes in java, though they don’t include any methods – just variables. A simple example using structs can be found here: https://www.tutorialspoint.com/cprogramming/c_structures.htm. In Java, of course, you will need to spend time thinking about what classes you’ll need, as your program will be greatly improved if you make use of the class structure to store your data. ? Word frequency… If you’re not sure how the frequency of words might work, try reading around for some ideas. There are some suggestions on these sites: https://en.wikipedia.org/wiki/Bag-ofwords_model, https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_alg orithm ? Visualisation and phrase matching… This guide to Turnitin, a prominent plagiarism checking tool online, provides more ideas on what type of functionality this your program could provide when you’re looking to create webpage visualisations or extend your work: https://help.turnitin.com/feedback-studio/turnitin-website/student/the-similarityreport/interpreting-the-similarity-report.htm SCC110: Software Development Term 3. Programming Project. Marking Scheme: Marks will be awarded according to the marking scheme shown at the start of this document. Marks for the ‘Functionality’ section will be awarded based on individual merit, but the following table gives an indicative overview of the level of functionality expected for each grade band: A: B: C: D: F: Working program that meets the criteria for a B, plus: - Either Creates several linked webpages to display the results - Or provides an interactive GUI - Provides highlighted text to show where matched phrases were - Allows the user to look up the frequency of any word in any file Working program that meets the criteria for a C, plus: - Compares each of the five files word by word using phrase matching with a settable length of phrase - Ignores matches in quote marks - Ranks the results from the comparison - Displays the results on screen effectively Working program that meets the criteria for a D, plus: - Analyses the frequency of words in each file - Removes punctuation, whitespace, newlines and quote marks from text - Displays that information Working program that: - Reads in all five files - Tokenises (creates a list of words from) the contents of the files No working program demonstrated, or program does not meet any requirements listed above.

Option 1

Low Cost Option
Download this past answer in few clicks

16.89 USD

PURCHASE SOLUTION

Already member?


Option 2

Custom new solution created by our subject matter experts

GET A QUOTE