AMS 595: Programming Languages and C++ Course Projects 1 Project Objectives Practice, deepen, and expand skills in • Programming • Computation • Tools and software • (Collaboration) Apply these skills to • Your own science and research with support from peers and instructors • Or to topics motivated by examples provided by us or online Performing your Project Time available for projects is short •Roughly final 4 weeks of semester •Bear this in mind while developing your project ideas ●Important note: if you choose C++ as your programming language, you might accomplish less, but create faster code - Taken into account in grading Project Success • A successful project need not have accomplished all of its original objectives, but perhaps instead you - Learned new skills, techniques, science along the way - Got major bits of code running - Developed some interim conclusions relevant to the original theme • To communicate your outcomes you will surely need some tables, graphs or pictures Project Grading • Projects count for 40% of total course grade. It will be based on: - Your submitted code - Your final project slide - Your written report • Submit software, data, report (PDF), and presentation slide •Upload to Blackboard at end of semester •We will post your slides Getting Started: Project Proposal 1. Choose a topic 2. Prepare project proposal (ONE page or less) − Title − Your name and email − Brief summary (ca. 1/2 page) with rationale or background to topic, what outcomes you hope to achieve, and your plan for getting the work done. − State what software you will use. • Upload by 11/6 as Word or pdf file with file name based on your name Next Step: Project Slide • Prepare a single slide to describe your project • Title • Your name • Goal(s): One sentence summary • What you plan to do − How you will reach your goals − What software you will use (C++, python, Matlab and anything else) − A relevant reference (if any) 7 Upload by 11/13 as ppt or pdf file with file name based on your name. We will post the collection of slides on Blackboard. Project Results Slide • Prepare a single slide to describe your project • Title • Your name • Original goal(s): One sentence summary • Summary of what you have done • What software you used from other sources and what you have created • Experimental results, evaluations or findings 8 Upload by 11/30 as ppt or pdf file with file name based on your name. We will post the collection of slides on Blackboard. Final Step: Project Report • Prepare a project report containing - Your software in C++, Python, and/or Matlab and associated data • If the data is huge, then provide links instead • All info needed to run code (e.g. compilers, options used etc.) - A PDF written document ~5 pages describing - ~1-page: the project objectives - ~2-pages: techniques and tools - ~2-pages: conclusions • Graphics and references in addition. They are not included in the 5 pages • Don’t forget references!! • Upload to Blackboard. Due date 12/3 Grading Criteria • Well organized and clear description of goals, challenges and accomplishments • Key components included? (e.g. Title, goals, approach, challenges, results) • Appropriate level of information • Convincing effort? Appropriate accomplishments? • Clear identification of basis for work (references, starting point) as appropriate • What you have learned • Discussion of how you tested your code • Anything special? (Use of tools, performance, creative approach,…??) • References 10 Grading the Code • Well thought out approach to solving stated problem (meeting your goals) • Solution is efficient, effective, easy to understand • Good standards of programming, including: organization and layout; modularity, use of suitable variable names • Good documentation (concise but to the point, all major functions described) • Program executes without errors and results correspond to information in report. Testing of program was adequate Project Topics • See our suggestions for some project topics − In Blackboard • A variety of programming projects that have suitable size and scope • Perhaps a starting point for some new ideas of your own • Some other potential sources of project ideas in these slides 12 Project Topics • There are plenty of examples of solved projects at: • http://www.cppforschool.com/projects.html • These come with C++ solutions, but they might give you ideas for another project • Another collection of problems can be found at: • http://www.projecteuler.net/about • Mostly suited for single developer, might give you some ideas 13 Project Topics • There are plenty of examples of solved projects using Matlab in Cleve Moler’s book Experiments with MATLAB • Could potentially be re-implemented in Python or C, expanded on or experimented with. • They include Game of Life; Predtor-Prey Model; Sudoku • Mandelbrot, Orbits, Shallow Water Equations • Morse Code; Music 14 Project Topics • You could look for efficient solutions in C++ to a problem requiring − Stencil operations, Linear algebra, Monte Carlo simulations, Genetic Algorithm, Molecular Dynamics • Ex: Discover behavior of gas, liquid and solid starting from Newton’s 2nd law and a simple model for the interaction between 2 atoms − Simulation: write your MD program − Data intensive: analyze data generated by an existing Python MD program − Graphics: write your own graphics or interface with package to visualize data generated by Mdcode 15 Project Topics • Consider focusing on performance tuning − Getting a really fast code; experimenting with ideas for optimization and comparing performance of different versions − Potentially trying out, reporting on use of tools • A very important real-world problem is the challenge of getting really fast matrix multiplication with double precision elements • Can one version do (very) well on more than one computer? 16
欢迎咨询51作业君