Category Archives: Uncategorized

Summapp

Summapp

This evening Pavol Drotar gave a talk about Summapp, an Android application he wrote with a team of five friends. Summapp analyses an audio recording of a phone call and returns a list of key words and actions found in it. A beta version is available on the Google Play Store.

Summapp was implemented in Kotlin, a programming language which integrates closely with Java. The advantage of programming in Kotlin is that it offers more simplicity and safety.

The app itself uses Google Speech to Text on the phone handset and a custom cloud-based service which in turn makes use of DialogFlow to extract important parts of the call. The results are then fed back to the user’s phone using Google Firebase.

Benefits of using Summapp:

  • Extract key events, such as meeting places and times, from an audio recording of a phone call.
  • Export extracted events to Google Calendar and share with other users
  • View specific places described in the call on Google Maps
  • Determines contacts mentioned in the phone call
  • Provides an organised history of calls

 

Advertisements

Cambridge Hackathon 2018

Saturday January 20, right before Lent term starts, about 300 enthusiastic Hackers gather at 9 am in the Cambridge Corn Exchange to compete in Hack Cambridge Ternary – the 2018 edition of the Cambridge Hackathon. A long 24-hour period of brainstorming, discussing, snacking and above all, coding, is awaiting them.

The Cambridge Hackathon is a student-run coding competition where teams compete to create the most cutting-edge, creative, sophisticated, or amusing product. In the 24 hours, the participants have to come up with ideas, develop the concepts, put it all together, and give a presentation of their achievement. There are also various companies with mentors present to help all the Hackers with their problems. (Also, they give away tons of swag.) Despite the limited time, amazing products are made every year.

DSC04393

View of an average table at the Hackathon

Queens’ was well represented at the Hackathon, CompScis from various years signed up for the event and developed some cool products. Aliyah, Jack, Jamie and Lorelyn developed an app which uses Microsoft Cognitive Services to scan payment receipt and summarise these for the user. Jirka and some others developed a system for Amazon’s Alexa which can tell jokes, store new jokes, and even rate your jokes! We (Lex and some others) developed a distributed system for fast and secure sharing of medical records.

 

During the 24-hour period, there are many points at which a Hacker can feel tired and hopeless, but pushing through results in some great products, which are definitely worth the struggle. All these great ideas were showcased on Sunday, the variety of which was mind-blowing. It covered body-controlled games, health applications, speech recognition, and many more.

DSC04606

The showcase

The Cambridge Hackathon is a great way to meet new people, develop coding skills, but most importantly to have fun. I would personally recommend it to anyone who has done some coding and wants to have a great time!

What the freshers did over Christmas

Our first weekly meeting of this term involved brief presentations by each of the first years on programming projects they did over the Christmas break. Before cracking on with the presentations, Alastair gave a recap of the main parts of a presentation to nail: script, speech, slides and body language and we discussed what went well and what went badly during revision and project work over the break.

Zebulon started off by presenting his sudoku solver, written entirely in ML, a functional programming language. He showed us how he split his program up into submodules, how he represented the sudoku board, and detailed the algorithm he used to decide which number to place in each cell.

Adam created a renderer of the Mandelbrot set over the break. In his presentation he gave a description of what the Mandelbrot set is, how you calculate whether a point belongs in the set or not, and a demo of his program.

Alice also rendered the Mandelbrot set, as well as the Julia set, using the python notebook environment introduced this year for the first years’ scientific computing course. She also created an audio representation of the Mandelbrot set, as well as altering the Julia set parameters over time to generate some funky pictures to accompany the music.

mandelbrot

Rahma rendered another fractal, this time the Dragon curve, which is formed by starting from a single line and iteratively taking the existing curve, rotating it 90 degrees and adding it on the end of the current curve. She described how we can represent such a curve programmatically and how we can calculate the new definition of the curve at each iteration.

dragoncurve

Costin implemented the Quine McCluskey algorithm for minimising boolean functions in C++. He detailed what the Quine McCluskey algorithm involves and the data representation he used to implement it.

Pavol spent some of his Christmas break analysing crime data from Cambridge, creating graphs to show crime rates in each month of the year, and areas of high and low crime.

Finally, Mukal gave a presentation on deep reinforcement learning, a topic he read up on over the break. He gave a brief overview of what reinforcement learning is, the notion of exploitation vs exploration and what innovations deepmind brought to the table such as deep Q learning.

Interactive Revision Workshop

As the term draws to a close, our minds begin to turn to the winter holidays. We think of getting the chance to sleep, spend time with family, see our friends, listen to Christmas music and most importantly, sleep. However, this week’s meeting (as presented by the second-years) firmly reminded us that there was more than that to think about.

 

Jamie introduced the session

 

Jamie introduced the session by suggesting three things to do over the break. The first suggestion was to take a break. The term is long and busy and he suggested taking a week off to catch up on sleep. This point was contested by some, however:, Tamara pointed out that if you continue working into the first week of the holidays, it could be possible to complete all of the mandatory assignments early, relieving the pressure of completing those later in the break.

The second suggestion was to explore our interest in Computer Science; throughout the term, it is easy to see the subject you are studying as a means to an end, as merely content to learn for an exam. In reality, it is important to remember that we are here to learn more about a subject we are passionate about and if we are passionate it keeps us motivated to work hard on our subject. Thus he suggested researching and learning more about the topics we found most interesting so far; which would have the added bonus of helping us understand that topic.

The final suggestion was to revise. Instead of lecturing us on how to do this, the second years had a brilliant idea where they split the group into three subgroups to discuss this amongst ourselves.

 

We discussed revision ideas in subgroups

 

Each group contained a mix of first, second and third years. This allowed us to learn from our more experienced peers and discuss ways of revising over the Christmas break. After talking it over in small groups we compiled our ideas into a list on the board of do’s and don’ts for revision. It was really helpful to talk to the older years and get their first-hand experiences for revision. One of the talking points which was especially useful to have first- hand advice on was how revising for different topics could differ, for example topics like discrete maths may lend themselves to a more practical, question- based revision method whereas algorithms might be better studied through writing our own notes and implementing examples in ML or Java.

At the end of the session we regrouped and wrote down all of the ideas we’d come up with:

Do’s Don’t
Identify your concerns Don’t waste time on tiny bit or in general
Do practice questions Don’t procrastinate
Some exam questions Don’t simply rely on exam questions
Refresh – revisit information that you’ve learned in progressively longer time periods

(Eg: Flashcards/Anki app)

One size doesn’t fit all subjects
Teaching: to be able to understand something well enough to explain it Don’t just do one subject at a time
Get set work out of the way Don’t be distracted
Have a revision plan

-Schedule tasks, not time

-Schedule by week not by day

Don’t stay in the same location
Paper 3 (new course):

  • Discuss with friends
  • Discuss with supervision likely topics
  • List core concepts
  • Papers from older courses?

Concurrent Programming in Prolog

This week, Tamara gave a presentation on her Part II project – implementing Concurrent Prolog. Tamara began by explaining how most programs only use one core of the CPU, and how her aim was to utilize multiple cores concurrently in Prolog and thus speed up computation.

She went on to explain the 4 fundamental rules of concurrency:

  • Atomicity – Either all actions of a transaction are carried out, or none are.
  • Consistency – Every action applied to consistent data leaves the data in a consistent state
  • Isolation – Operations are isolated, protected from the effects of other concurrently executed operations.
  • Durability – If an operation completes successfully, its effects persist.

To illustrate the benefits of concurrency, Tamara then demonstrated an example of using concurrency when walking a tree in Prolog. Since Prolog is a declarative programming language, there is no shared data when evaluating Prolog Facts and Rules, which turns out to be beneficial when implementing concurrency.

Tamara then outlined two possible implementations of concurrency:

  • Pool of threads: Using multiple worker threads that were able to claim and perform tasks that were held in a stack declared on the main thread.
  • Work stealing: Each worker thread has its own stack of tasks that it works through, stealing work from other threads if its stack is empty.

At the end of the talk, Tamara answered all sorts of fun and tricky questions. Everyone had the chance to give structured feedback on the presentation, using the techniques from Dr Rice’s presentation last week.

prolog_concurrency

Presentation Skills Workshop

A skill often overlooked – but no less important – in the field of Computer Science is presentation. Apple’s keynotes, along with those of other major tech and gaming companies, compete with the year’s most highly awaited speeches. A new startup needs funding, and for that its founders need to be able to pitch their ideas. And even the typical professional or academic will present several papers or projects, often in situations where persuading the audience to believe in their idea has direct and significant consequences. So when the time comes, you need to be able to present effectively, which is why Dr Rice gave us a talk aiming to teach us this crucial skill.

Following annual tradition, we began by dissecting the “How (not) to give a presentation” video published by Neil Dodgson, a former member of the Computer Lab. Apart from more obvious issues such as a lack of preparation, absence of a script, and crazy transition animations and sounds, we were encouraged to pick up on the more subtle mistakes Dodgson (intentionally) makes. By the end, everyone knew the pitfalls to absolutely avoid.

People say that the best way to learn to present well is to practise. But you don’t always have someone at hand to listen repeatedly to your presentations, and if you don’t know what to look for in a good presentation, you can’t even practise usefully by yourself. Therefore, it’s very helpful to give feedback to others; by running critical eye over others’ work, you learn how to evaluate your own. The word “feedback” alone is quite nebulous, so Dr Rice suggests that we make use of a structure: we should comment on script (verbal content), slides (visual content), verbal delivery and body language.

To conclude the talk, Dr Rice covered a few tips to maximise the persuasive appeal of a presentation. Group things in threes. The first 30 seconds are paramount. Appear motivated.

And finally, make your ending snappy and memorable.

Second Years’ Summer Vacations

The Summer Vacation at Cambridge provides ample time for Computer Scientists at Queens’ to try their hand at a variety of new skills, as well as travel and have amazing experiences. The second years this year were impressively proactive in securing placements, expanding their skillset, and perhaps most importantly, recharging for the new academic year ahead – all of which they told us about in this week’s Wednesday afternoon meeting.

Yuzheng Ding began with a trip with his girlfriend travelling through Windermere, Edinburgh, Whitby and York. This well-earned break provided a chance to recover from the stresses of exam term before he returned home to China where he tutored students in maths, physics and IT. This was a great way to learn skills in teaching, and a chance to help others become better at SQL, algorithm design, BASIC, and more. He even found time to try to teach his mother some English and learn to cook, though apparently with mixed results!

Lex van der Stoep similarly took the summer as a chance to learn what he wanted to, studying game playing and machine learning off Kaggle. Impressively, he even got his dad interested in Haskell and to this day he helps him learn more of the functional programming language via email! The summer provided him with time to visit Tuscany in Italy, and the pictures of him basking in beautiful and sunny Split, Croatia certainly made everyone in the room feel very envious!

as

Meanwhile, somewhere between simply teaching yourself new skills versus working in an established company, Jack Wickham worked for a tiny startup company named FloatPlane Media, a spin-off of a company he had previously worked at. There, he and his team developed a new video platform in full-stack NodeJS, allowing him to get familiar with perhaps the most on-trend web development platform right now as well as the languages powering it (JavaScript and TypeScript), its APIs and tooling. His work involved learning APIs around Stripe and PayPal, as well as dealing with the more mundane side of running a web-service such as migrating user data. It sounded like a huge learning curve but one with large payoff, and all the hard work was rewarded with a family trip to Florida. Apparently the Kennedy Space Center was very impressive!

ssad

Aliyah Bond meanwhile worked for a much more established London startup, Monzo. This company’s fluorescent orange debit cards have become a familiar sight around Cambridge Computer Science students as they promise a simplified banking experience, integrated with smartphones with better ease-of-use. To gain experience and knowledge of the codebase, she was initially placed on bug fixes before being moved onto front-end development with React, as well as a some time on the backend writing Go. Aliyah enjoyed the working environment which had all the usual perks you would expect in a funded tech startup – beanbags, a dog-friendly policy, casual atmosphere and the like. And whilst there was only one other intern, she appreciated how it ensured she would interact with full-time, experienced employees.

monzo

Interesting insights into life as researcher came from Jamie Lowenthal, who worked in the University of Cambridge’s Computer Laboratory. Specifically, he worked in the Rainbow Group, who specialise in graphics and motion. His team were researching high dynamic range multifocal displays, which promise hologram-like graphics, as well as high dynamic range virtual reality headsets. His work included breaking apart iPads, stitching them to powerful GPUs, and tearing apart virtual reality headsets. It sounds like Jamie enjoyed his experience and whilst research may not have been quite like he expected, he certainly may return again – and highly recommends the UROP scheme for all those interested as well!

1200px-University_of_Cambridge_Computer_Laboratory