Example: bankruptcy

02-201: Programming for Scientists

02-201: Programming for ScientistsPhillip CompeauFall 20161. Course Contact informationInstructor:Phillip Center (GHC) 7403 Office Hours:Mondays 2:00 - 3:00 PM (or by appointment)TA:Misna Class locationLecture:MWF 10:30 - 11:20 AM in Gates-Hillman Center (GHC) 4101 Recitation:Fridays 3:00 - 4:20 PM in Doherty Hall (DH) Course descriptionThis course provides a practical introduction to Programming for students with little or no pre-vious Programming experience. Extensive Programming assignments will illustrate programmingconcepts, languages, and tools. Programming assignments will be based on analytical tasks thatmight be faced by Scientists and will typically include parsing, statistical analysis, simulation, andoptimization. Principles of good software engineering will also be stressed. After an introductionto computational thinking (as it pertains to science), most Programming assignments will be donein the Go Programming language , an industry-supported, modern Programming language , the syn-tax of which will be covered in depth.

in the Go programming language, an industry-supported, modern programming language, the syn- tax of which will be covered in depth. Other assignments may be given in other languages (Java,

Tags:

  Programming, Language, Scientist, Programming language, 02 201, Programming for scientists, The go programming language

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of 02-201: Programming for Scientists

1 02-201: Programming for ScientistsPhillip CompeauFall 20161. Course Contact informationInstructor:Phillip Center (GHC) 7403 Office Hours:Mondays 2:00 - 3:00 PM (or by appointment)TA:Misna Class locationLecture:MWF 10:30 - 11:20 AM in Gates-Hillman Center (GHC) 4101 Recitation:Fridays 3:00 - 4:20 PM in Doherty Hall (DH) Course descriptionThis course provides a practical introduction to Programming for students with little or no pre-vious Programming experience. Extensive Programming assignments will illustrate programmingconcepts, languages, and tools. Programming assignments will be based on analytical tasks thatmight be faced by Scientists and will typically include parsing, statistical analysis, simulation, andoptimization. Principles of good software engineering will also be stressed. After an introductionto computational thinking (as it pertains to science), most Programming assignments will be donein the Go Programming language , an industry-supported, modern Programming language , the syn-tax of which will be covered in depth.

2 Other assignments may be given in other languages (Java,Python, etc.) to highlight the commonalities and differences between Course philosophyOur first goal for this course is to make you comfortable writing your own programs and have abetter understanding of how computing second goal is to convince you how much fun Programming is! Writing a program is likesolving a sudoku puzzle Programming tests (and builds!) your powers of concentration andlogical thinking. But Programming is more rewarding than sudoku because it equips you with atransferable skill instead of the ability to fill in a square of third goal is to help you understand some fundamental scientific (in particular, biological)algorithms on a can be a challenging course for some because thinking like a programmer might be newto you. Rest assured: the difficulty of the course and the material we cover is well within that of atypical introductory Programming Pre-requisites Some analytical skills and mathematical background.

3 No biology or Programming knowledge is Course DetailsSubmitting Programming assignments (homeworks and projects) will be sub-mitted via Autolab ( ),and will be graded in conjunction with the policy outlined online forum is provided on Piazza ( ) as an area for discussion and questions. The forum will be moderated by the course staffwho will respond to questions, but students are encouraged to help each other via , assignment specifics should not be discussed any hints will be provided by theteaching are expected to produce clean, readable, and well-documentedcode. The coding practices should be consistent with what is taught in the lectures ( con-sistent naming conventions, descriptive variable names, and short functions). A componentof each assignment s grade will be based on coding of the course will be taught in the Go Programming is a relatively new language that has industry backing and that is simpler than manylanguages, but not too simple (it still contains important concepts like types, pointers, andtype interfaces).

4 However, unlike most introductory Programming courses, we will not onlylook at a single language . Think of it as comparative computational linguistics wemay have a few assignments in a couple of other languages. The best way to understandprogramming concepts is to think about them in terms of pseudocode as well as see how theyare realized in more than one Tentative Course TopicsWe hope to cover the following topics. We won t necessarily cover them in this order, however. The machine and how Programming languages abstract connection betweenprogramming language constructs and the underlying machine will be discussed. The syn-tax for the Programming language Go will be covered in depth, and comparison betweencommon Programming language syntaxes will be Imperative Programming constructs: functions, if-statements, loops (for, while), switch-statements, expressions2. Basic data structuring constructs: variables, arrays, strings, structs, types, and pointers3.

5 Reading and writing files4. How to build large programs using top-down design5. Basic execution and memory model (Von Neumann architecture) Basic data structures and algorithm design techniques:Several data structures andalgorithms will be Linear data structures: arrays, lists, stacks, queues; binary search7. Dictionary data structures: binary search trees including tree traversals (DFS, BFS,pre-, in-, post-order); hash Divide and conquer, recursion The tools of Programming :Throughout the course, we will cover important tools for goodsoftware engineering Assertions, preconditions, postconditions10. Code documentation11. Unit tests testing small sections of code12. Debugging strategies, common errors13. Profiling figuring out what s taking so long Abstraction and modularization:How we control complexity through well-defined Bigger units of code: Modules, namespaces, packages15. Type interfaces and user-defined types16. Object-oriented programming17.

6 Design patterns Parallelism:Using Go s parallel features to let your program do more than 1 thing at Goroutines19. Channels Computability and the limits of there problems computers fundamen-tallycannotsolve?20. Turing machines21. Halting problem and uncomputable functions22. NP and NP-complete problems Fundamental scientific will also encounter a handful of fundamentalscientific algorithms, especially those taken from biology. Examples are below:23. Graph-based algorithms for genome assembly24. Evolutionary tree construction with UPGMA25. Applying dynamic Programming to compare biological sequences26. Local search for protein folding27. Simulating large galaxy models with the Barnes-Hut algorithm28. Applying game theory to understand dynamics of cooperation33. CourseworkCoursework will consist of extensive Programming plus two midterms and a final exam: Programming assignments.(40% of your grade) Approximately 8 15 assignments designedto give you familiarity with a particular language feature, Programming idea, common pro-gramming task, or (40% of your grade) The midterms and final exam will tests your knowledge ofthe material from the class, and your ability to read and design programs.

7 The midterms willbe held in class and the final held during the university s scheduled time. The midterm datesare: Midterm 1 (10% of your grade): Friday, September 30 (in class) Midterm 2 (10% of your grade): Friday, November 4 (in class) Final (20% of your grade): Time and location TBD (will be posted when set by univer-sity)The midterms will not be cumulative: midterm 2 will cover material encountered aftermidterm final will cover all the material from the exercises.(10% of your grade) Learning to program is a lot like learning to speak aforeign language ; it is far better to practice a little each day than to practice a lot once aweek. Accordingly, you will perform much better in the course if you don t wait until the lastminute to complete a week s worth of homework. Sleep is often the best way to debug! Toencourage you to space out your work, I will have short exercises (due Tuesday and Sundayevenings). Each assignment will receive a grade of pass or incomplete.

8 You are allowed three free incomplete grades without and participation(10% of your grade) Attendance will be taken, and we will haveoccasional in-class exercises that serve to reinforce the concepts we have covered. Theseexercises will not be graded, but participation will be expected in order to receive a completegrade for that are allowed three dropped attendance grades without penalty. These can be used forany assignments must be completed on your own (unless noted) and turned in to theautograder by a given late assignments will be programmingassignments will be graded by the autograder, which will check that your programs are outputtingthe expected results. In addition, a fraction of your grade for every Programming assignment willbe based on following appropriate Programming style. The autograder will give you an estimatedgrade immediately, excluding the style portion of your grade. The TAs will subsequently go overyour code and assign the final grade, taking into account coding Collaboration PolicyYou may discuss Programming assignments with , you must not share orshow or see the code of your must write your own code entirely.

9 You canpost general coding questions (with code snippets) on the discussion must write all Programming assignments on your own and cannot share code with otherstudents or use code obtained from other students. In addition to manual inspection, we use anautomatic system for detecting Programming assignments that are significantly mayneveruse, look at, study, or copy any answers from previous semesters of this Other policiesClassroom etiquette:To minimize disruptions and in consideration of your classmates, I askthat you please arrive on time and do not leave early. If you must do either, please do so use is allowed only for following along with in-class examples. The use of phones duringclass is forbidden and will result in a zero discussion grade for the absences:Students claiming an excused absence for an in-class exam must supplydocumentation (such as a doctor s note) justifying the absence. Absences for religious observancesmust be submitted by email to the instructor during the first two weeks of the honesty:All class work should be done independently unless explicitly indicatedon the assignment handout.

10 You maydiscusshomework problems and Programming assignmentswith classmates, but must write your solution by yourself. If you do discuss assignments with otherclassmates, you must supply their names at the top of your homework / source code. No excuseswill be accepted for copying others work (from the current or past semesters), and violations willbe dealt with harshly. (Getting a bad grade is much preferable to cheating.)The university s policy on academic integrity can be found at the following link: In part, it reads, Unauthorized assistance refers to the use ofsources of support that have not been specifically authorized in this policy statement or by thecourse instructor(s) in the completion of academic work to be graded. Such sources of supportmay include but are not limited to advice or help provided by another individual, published orunpublished written sources, and electronic sources. You should be familiar with the policy in particular: use of a previous semester s answer keys or online solution manualsfor graded work is absolutely forbidden.


Related search queries