Welcome to my page

Roman YasinovskyyMy name is Roman Yasinovskyy and I am an Assistant Professor of Information Technology at the Department of STEM of the School of Science and Mathematics at Upper Iowa University.

I received my bachelor's and master's degrees in computer science from the National University of Kyiv-Mohyla Academy and my doctorate in information technology from Towson University.

I joined Upper Iowa in 2011, after spending two years as a lecturer at Towson.

This page describes my teaching experience, research interests and useful links.


I teach introductory, programming, operating systems, networking, and information security courses at Upper Iowa University. I also taught web design, data structures, system architecture, and operating systems security courses at Towson University.

Recent courses

2013-14 (Term 6)

Spring 2014 (II)

Spring 2014 (I)

Fall 2013 (II)

Fall 2012 (I)

Interim 2013

Show older courses


My research interests are operating systems, network protocols, and security. As part of my dissertation, I implemented IPv6 on a Bare PC.

My dissertation dealt with measuring voice performance over IPv6 and using IPv6 in a bare PC computing environment. I like the topic of multimedia in general, because of its potential, and because I can also see problems with the current state of the Internet that next-generation protocols can solve.

My work with a bare PC taught me to think out of the box and investigate problems from many angles, find different solutions, and implement the most efficient one. As desktop computing is dying and new operating systems are being released every year, it is a great time for new ideas and devices. I want my research to move technology forward, while doing its part to extend our knowledge and understanding.

I know how to design and run experiments with limited resources. I have designed, built, and managed a small network of Linux routers and servers for my research, and now this network can be used by others to run their new experiments.

I continue my study of IPv6, and especially its performance in multimedia networks. I also investigate the security of existing and new protocols, like IPsec or DNSSEC. I use modern technologies to create new, innovative devices and applications.

Curriculum Vitae


  • Doctor of Science in Applied Information Technology from Towson University
  • Master of Science in Computer Control Systems and Technologies from National University of Kyiv-Mohyla Academy
  • Bachelor of Science in Computer Science from National University of Kyiv-Mohyla Academy


  • Network protocols
  • Operating systems security
  • Bare PC
  • Machine learning

Teaching Experience

  • Programming (Java, C++, Python)
  • Networks (protocols, management)
  • Operating systems (Linux, Windows)
  • Security (information, OS, network)
  • System architecture (ERP)
  • Introduction to technology (web design, Adobe Flash, MS Office)

Research Experience

  • VoIP Performance over IPv6 (Towson University, 2007-2009): In this study we evaluated VoIP performance over IPv6 by conducting experiments in a LAN environment in the presence of various types of background traffic, and comparing the results with IPv4. We also studied the impact of IPsec, 6to4, and Teredo transition mechanisms on the quality of voice. To evaluate performance we determined maximum and mean delta (the time between voice packet arrivals), maximum and mean jitter, packet loss, throughput, and the MOS (Mean Opinion Score). When applicable, we conducted our experiments using Windows, Linux, and bare PC (OS-less) softphones, with the same audio codec (G.711 PCMU). In general, our results show that while the difference between VoIP performance over IPv6 and IPv4 is negligible, IPsec and transitional mechanisms can add overhead that may impact voice quality. The results of this work will be useful for network administrators and ISPs who are planning a transition to IPv6.
  • VoIP Performance in a Wireless LAN (Towson University, 2005-2006): In this study we evaluated VoIP performance in a wireless (802.11b) LAN and measured its call capacity. The test network included hardware and software phones connected via the access point. We used both a calculated MOS and a MOS assigned by listening to evaluate VoIP performance.


  • R. Yasinovskyy, A. Alexander, A. L. Wijesinha, and R. K. Karne, "Bare PC SIP User Agent Implementation and Performance for Secure VoIP," Int'l Journal on Advances in Telecommunications, vol. 5, no 3 and 4, pp. 111-119, 2012. [ web | pdf ]
  • A. Alexander, R. Yasinovskyy, A. Wijesinha, and R. Karne, "SIP Server Implementation and Performance on a Bare PC," Int'l Journal in Advances on Telecommunications, vol. 4, no. 1 and 2, pp. 82-92, 2011. [ web | pdf ]
  • R. Yasinovskyy, A. Wijesinha, and R. Karne, “VoIP performance with IPsec in IPv4-IPv6 transition networks”, Infocommunications Journal, vol. LXV, no. III, pp. 15-23, 2010. [ web | pdf ]
  • R. Yasinovskyy, A. Wijesinha, and R. Karne, “VoIP Call Performance over IPv6 during HTTP and BitTorrent Downloads," ISCA 22nd Int'l Conf. Parallel and Distributed Computing and Communication Systems (PDCCS '09), pp. 103-108, 2009. [ web | pdf ]
  • R. Yasinovskyy, A. Wijesinha, and R. Karne, "Impact of IPsec and 6to4 on VoIP Quality over IPv6," The 10th Int'l Conf. Telecommunications (ConTEL '09), pp. 235-242, 2009. [ web | pdf ]
  • R. Yasinovskyy, A. Wijesinha, R. Karne, and G. Khaksari, "A Comparison of VoIP Performance on IPv6 and IPv4 Networks," The 7th ACS/IEEE Int'l Conf. Computer Systems and Applications (AICCSA '09), pp. 603-609, 2009. [ web | pdf ]

Helpful code snippets

Hide/show an HTML element

     * © v.DragonEyE.n09, 2006
     * http://www.astahost.com/info.php/javascript-hide-show-any-element-css_t11957.html
    function toggleElement(id, action) {
         if (action == "show") {
              document.getElementById(id).style.display = "block";
         } else {
              document.getElementById(id).style.display = "none";

Remember Livetext and Pearson passwords (Greasemonkey)

    // ==UserScript==
    // @name        Livetext
    // @namespace   http://www.uiu.edu/~yasinovskyyr/
    // @include     https://*.livetext.com/
    // @include     http://*.myprogramminglab.com/
    // @include     http://*.coursesmart.com/
    // @version     0.0.3
    // @history     0.0.3 (2013-04-24) - added coursesmart.com
    //              0.0.2 (2013-02-18) - added myprogramminglab.com
    //              0.0.1 (2013-01-08) - Initial release (livetext.com)
    // ==/UserScript==

    if (window.location.href.indexOf("livetext") > -1) {
      document.getElementById("user").value = "username";
      document.getElementById("pswd1").value = "username";
      document.getElementById("pswd2").value = "password";
    } else if (window.location.href.indexOf("programminglab") >-1) {
      document.getElementById("query_term").value = "username";
      document.getElementById("xxx").value = "username";
      document.getElementById("yyy").value = "password";
    } else if (window.location.href.indexOf("coursesmart") >-1) {
      document.getElementById("login").value = "username";
      //document.getElementById("xxx").value = "username";
      document.getElementById("password").value = "password";

Reorder myUIU terms (Greasemonkey)

    // ==UserScript==
    // @name        myUIU Prettifier
    // @namespace   http://www.uiu.edu/~yasinovskyyr/
    // @description Change some myUIU settings
    // @include     https://my.uiu.edu/ICS/
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
    // @version     0.0.2
    // @history     0.0.2 - added pg1_V_ddlbTerm list id
    //              0.0.1 - initial release
    // ==/UserScript==

    // Prepend some text to the element with specific id using the jQuery library.
    if ($('#pg0_V_ddlTerm').length > 0) {
      listID = '#pg0_V_ddlTerm';
    if ($('#pg1_V_ddlbTerm').length > 0) {
      listID = '#pg1_V_ddlbTerm';

    $(listID).prepend('\n<option value="2011;10">2011-2012 - Fall Semester</option>');
    $(listID).prepend('\n<option value="2011;30">2011-2012 - Spring Semester</option>');
    $(listID).prepend('\n<option value="2011;51">2011-2012 - Interim/May</option>');
    $(listID).prepend('\n<option value="2012;FA">2012-2013 - Fall Semester</option>');
    $(listID).prepend('\n<option value="2012;SP">2012-2013 - Spring Semester</option>');
    $(listID).prepend('\n<option value="2012;SU;FM">2012-2013 - Interim/May</option>');
    $(listID).prepend('\n<option value="2013;FA">2013-2014 - Fall Semester</option>');
    $(listID).prepend('\n<option value="2013;SP" disabled="true">2013-2014 - Spring Semester</option>');

Check faculty pages

    #! /usr/bin/env python

        # For Python 3.0 and later
        from urllib.request import urlopen
    except ImportError:
        # Fall back to Python 2's urllib2
        from urllib2 import urlopen
    from http.client import *
    import re
    import math
    import time
    import sys

    PROJECT = 1

    # uiu web constants
    PROTO = 'http://'
    SERVER = 'uiu.edu'
    PATH = '/facultystaff/facultyprofiles/'
    FAC_PAGES = {'Andres School of Education': 'education.html',
                 'School of Business': 'business.html',
                 'School of Liberal Arts': 'liberalarts.html',
                 'School of Science & Mathematics': 'sciencemath.html'}
    REGEXP = '


' faculty = {} faculty_web = [] def test_names(): for school in FAC_PAGES: print(school, end='.' * (40 - len(school))) html = urlopen(PROTO + SERVER + PATH + FAC_PAGES[school]) page = html.read().decode('utf-8') m = re.findall(REGEXP, page) print('%d names' % len(m)) faculty.update(dict(m)) print('\nChecking individual sites') for name in faculty: print(name, end='.' * (40 - len(name))) conn = HTTPConnection(SERVER) conn.request('GET', '/~' + faculty[name]) r2 = conn.getresponse() print(r2.reason) if r2.status != 404: faculty_web.append(name) #print('%s: %s %s' % (name, r2.status, r2.reason)) print('\nFaculty with web sites:') faculty_web.sort() for f in faculty_web: print(f) def main(*args): if PROJECT == 1: test_names() else: print('Unknown project') if __name__ == '__main__': main()