Comp 415 Syllabus Spring 2022

Instructor Contact info

Instructor: Dr. John F. Santore
Phone: 508-531-2226
Office: Science Center 333
E-Mail: jsantore@bridgew.edu
Website:http://webhost.bridgew.edu/Spring2020/Comp415


Office Hours FoR Spring 2020

  • Mon 10-11am
  • Tues 5-5:50pm(Just before night class)
  • Thurs 11-noon
  • Fri 10-11am
  • or by appointment
  • I also will take appointments if you cannot make my other office hours, however, I generally have meetings and work prepared for a day or two ahead so plan on about 48 hours from the time I get your request to us being able to meet.



    I will be available for both online (MS Teams) and in person office hours. Unless the University changes its guidance, I will be available for both, but will focus on people in the office during the office hours. MS teams appointments are always welcome for those who contact me to set an appointment.


Course Description:

In this course, students and the instructor will explore programming languages not widely used in the current computer science curriculum. This might include new up and coming languages, or a specialty language which is often used for a particular niche in computing. Students will study the common idioms of the language, the tool chains used for development, the abstraction patterns in the language and the programming paradigms that the language supports. Students will write several programs in the language to fully understand and explore the language.


We will examining the Go (Golang) programming language in depth, comparing it to other languages.

Course OutComes

At the end of the course Students will:

  • write significant (for an academic program) go programs
  • understand and effectively use the go toolchain for building, debugging and automated testing on programs
  • Use go modern dependency management techniques
  •  write programs in ‘idiomatic go’ which reinforces the golang programming patterns
  • Use and understand the concurrency race condition protections including channels and goroutines.
  • Understand web assembly, its promise to future programming and Go’s current foray into webassembly

Textbooks:

One required Textbook:


Title:

Learning Go

Author:

Jon Bodner

    Class Requirements and Grading

    • Project related work: 50% (coding, testing, design, etc)
    • Class(homework/quizzes/participation/presentation(s)):15%
    • Exams 35% : Midterm 15% and final 20%

Project Work

You can't really grok a programming language without writing lots of programs in the language, so a large part of the grade will be project wok. Project work is done individually. There will be several projects in the class. The earlier projects will be less difficult and therefore will be worth less than the later projects which will require more effort and time.

Non-Project Work

Non-project work (exams and misc assignments) are individual assignments and should not be done with any other classmates. (discussion without recording devices is always allowed for homeworks, however, exams are closed neighbor)

Students with Special Needs

Anyone who has special needs should contact me in the first week of classes with their letter from the Academic Achievement center so that reasonable accommodations can be agreed on.

Academic Integrity

See the 2022 academic integrity policy for a complete description of the academic integrity procedure at Bridgewater.


Academic integrity will be taken very seriously in this class. All individual work must be your own. If you cheat or otherwise represent the work of others as your own. You will receive an F for the course.

Guidelines for proper academic integrity:

Discussing problems with your classmates can help you understand the problems and kinds of solutions to those problems that you will learn about in this class. In an effort to make in clear what sort of discussions are appropriate and encouraged in this class and which cross the line to academic dishonesty I use the following guidelines: You may discuss any out of class problem I assign in this class with your classmates or other so long as no one is using any sort of recording implement including, but not limited to, computers, digital recorders, pens, pencils, phones etc. This lets you talk about theoretical solutions without sharing the actual implementations. As soon as anyone in the group is typing, writing etc, all conversations must stop. You may look at someone else's program code only very briefly in order to spot a simple syntax error. As a rule of thumb, if you find yourself looking at someone else's code for more than about 30-45 seconds it is probably time to stop. If you are having trouble with your program, come to the instructors office hours for more help.

All in class exams and quizzes are closed book and closed neighbor. If you are found using a data storage device of any kind during one of these evaluations, you will be failed for the course.

Of course for your group work, your entire group is intended to produce a single deliverable and are expected to work together on all parts of that so the above does not apply to members of a group working together on their group work.

Standards for in class behavior:

All students coming into the in class sections will need to abide by the University's Covid Guidelines.


You are all adults and are expected to act as adults in this class. While questions are encouraged in this class, if a particular line of questioning is taking us too far afield, I will ask the student to come by my office hours or to see me after class.

Cell phones, pagers, electronic organizers and other devices should be silenced while in class. If you work of EMS or something similar, please turn your cell phones/ pagers etc to vibrate mode so that you are not disrupting others in the class.

In the unlikely case of trouble makers in the class, those who are simply attempting to disrupt the class will be asked to stop; those who will not, will be referred to the college for appropriate action. The BSU statement of class behavior can also be found at 2022 classroom conduct policy

And of course it should go without saying that the University Non-Discrimination and Diversity and other policies are observed in this class.

    Tentative Schedule

I may well rearrange some of the later material based on classroom interaction. The pace might be more aspirational than achievable, but this is my ideal.

Week

Topic

Week 1

Introduction to the class and to Go

Week 2

Basic Go programming, project structure, building, modules etc

Week 3

More go programming including structs, arrays, slices, functions, methods etc.

Week 4

What makes go famous: Concurrency, go routines etc.

Week 5

GUIs in Go

Week 6

Web assembly and Go

Week 7

Putting it together: Application development in Go

Week 8

Review and Midterm

Week 9

Automated testing in Go

Week 10

Programming Go in the ‘real world’ Continuous integration, auto-deployment and servers

Week 11

Processing web API data in Go

Week 12

Reflection in Go

Week 13

What’s awesome in Go in 2020 https://github.com/avelino/awesome-go

Week 14

Great libraries and applications using Go
possibly foreign function interfaces from Go to other languages

Week 15

review and final



D