diff --git a/Rakefile b/Rakefile index 2a57f06a..c80644e1 100644 --- a/Rakefile +++ b/Rakefile @@ -357,3 +357,28 @@ task :demoday do end end +file "artifacts/okennedy.bib" do + File.open("artifacts/okennedy.bib", "w+") do |fh| + LabMetadata.publications_for("Oliver Kennedy") + .each do |pub| + fh.puts LabMetadata.bibtex_for(pub) + end + end +end + +file "artifacts/okennedy.ris" do + File.open("artifacts/okennedy.ris", "w+") do |fh| + LabMetadata.publications_for("Oliver Kennedy") + .filter do |pub| + case LabMetadata.complete_venue(pub)["type"] + when "demo", "panel" then false + else true + end + end + .each do |pub| + fh.puts LabMetadata.ris_for(pub) + end + end +end + +task :bib => ["artifacts/okennedy.bib", "artifacts/okennedy.ris"] diff --git a/db/cv/okennedy/grants.json b/db/cv/okennedy/grants.json index 2f413231..ab238592 100644 --- a/db/cv/okennedy/grants.json +++ b/db/cv/okennedy/grants.json @@ -1,10 +1,32 @@ [ + { "title" : "STTR Phase 1: Curating Uncertainty for Reliable Exploitation and Collaboration (CURE-C)", + "agency" : "NASA", + "role" : "PI", + "amount" : 149560, + "effort" : "50%", + "status" : "accepted", + "start" : "08/01/2023", "end" : "07/30/2024", + "type" : "grant", + "commitment" : { + "by_year" : { + "2024" : 1 + } + }, + "collaborative" : [ + { "institution" : "Xanalytix Systems", + "pis" : ["David Sudit"], + "amount" : 0 + } + ], + "projects" : ["vizier"], + "summary" : "Microkernel notebooks replace the single kernel in traditional computational notebooks with separate, isolated processes. This proposal integrates work in programming languages, resource prediction, and database systems to improve the performance of microkernel notebooks, and to provide higher-quality fine-grained provenance over imperative code." + }, { "title" : "Collaborative Research: IIS: MEDIUM: Microkernel Notebooks", "agency" : "NSF: IIS: III: MEDIUM", "role" : "PI", "amount" : 493935, "effort" : "100%", - "status" : "submitted", + "status" : "rejected", "start" : "08/15/2023", "end" : "08/14/2027", "type" : "grant", "commitment" : { @@ -29,7 +51,7 @@ "role" : "Co-PI", "amount" : 1200000, "effort" : "20%", - "status" : "submitted", + "status" : "rejected", "start" : "09/01/2023", "end" : "08/31/2028", "type" : "grant", "commitment" : { @@ -56,7 +78,7 @@ "role" : "PI", "amount" : 750000, "effort" : "20%", - "status" : "submitted", + "status" : "rejected", "start" : "02/01/2023", "end" : "01/31/2024", "type" : "grant", "commitment" : { diff --git a/db/lab.json b/db/lab.json index 9a1094fd..5b812cc9 100644 --- a/db/lab.json +++ b/db/lab.json @@ -27,7 +27,7 @@ }, "projects" : ["mimir", "vizier", "astral", "pocketdata", "insider-threats"], "github" : "okennedy", - "gnusocial" : "@okennedy@social.xthemage.net", + "gnusocial" : "@okennedy@social.sdf.org", "scholar" : "9Q9tiCsAAAAJ", "dblp" : "hd/k/Kennedy:Oliver", "cv" : "https://odin.cse.buffalo.edu/artifacts/okennedy.pdf", diff --git a/db/publications.json b/db/publications.json index 83921f4c..a337885a 100644 --- a/db/publications.json +++ b/db/publications.json @@ -30,6 +30,7 @@ "year" : 2023, "projects" : ["vizier"], "length" : 19, + "volume" : 10, "urls" : { "paper" : "https://www.frontiersin.org/articles/10.3389/fmed.2023.1076794/full?field=&journalName=Frontiers_in_Medicine&id=1076794" } diff --git a/db/venues/pVLDB.json b/db/venues/pVLDB.json index 8a6f05fa..4aa3bc19 100644 --- a/db/venues/pVLDB.json +++ b/db/venues/pVLDB.json @@ -2,6 +2,7 @@ "fullname" : "Proceedings of the VLDB Endowment", "type" : "journal", "selectivity" : { + "2023" : 0.248, // source: VLDB Keynote; 1074 submit / 266 accept "2019" : 0.1891, // source: VLDB Keynote; 677 submit / 128 accept "2015" : 0.213, // source: VLDB Keynote; 710 submit / 151 accept (+ 21 rollover) "2013" : 0.195, // source: http://digitalpiglet.org/research/ diff --git a/lib/lab_metadata.rb b/lib/lab_metadata.rb index 224981e2..d27ca757 100644 --- a/lib/lab_metadata.rb +++ b/lib/lab_metadata.rb @@ -282,6 +282,50 @@ module LabMetadata (n.map { |n| "#{n[0]}." } + [last]).join(" ") end + def LabMetadata.pubmed_abbreviation(name) + n = name.split(/ +/) + last = n.pop + last + " " + n.map { |n| n[0] }.join("") + end + + def LabMetadata.ris_for(pub) + fields = [] + venue = LabMetadata.complete_venue(pub) + fields.push(["TY", + case venue["type"] + when "journal" then "JOUR" + when "conference", "workshop", "abstract" then "CONF" + when "thesis" then "THES" + when "techreport" then "RPRT" + when "chapter" then "CHAP" + when "patent" then "PAT" + else raise "Unknown pub type for RIS: '#{venue["type"]}' (in #{pub["title"]})" + end + ]) + pub["authors"].each do |au| + au = au.split(" ") + last = au.pop + first = au.shift + first = ([first] + au.map { |n| n[0]+"." }).join(" ") + fields.push(["AU", + "#{last}, #{first}" + ]) + end + fields.push(["PY", venue["year"].to_s]) + fields.push(["TI", pub["title"]]) + fields.push(["T2", venue["fullname"]]) + if venue["type"] == "journal" then + if pub.include? "pages" + pages = pub["pages"].split("-+") + fields.push(["SP", pages[0]]) + fields.push(["EP", if pages.size > 1 then pages[1] else pages[0] end]) + end + fields.push(["VL", pub["volume"].to_s]) + end + fields.push(["ER", ""]) + fields.map { |tag,value| "#{tag} - #{value}" }.join("\n") + end + def LabMetadata.person_name(full, args = {}) person = LabMetadata.data_for(full) person = {} if person.nil? diff --git a/src/teaching/cse-250/index.html b/src/teaching/cse-250/index.html index 296e6a56..5a398ce9 100644 --- a/src/teaching/cse-250/index.html +++ b/src/teaching/cse-250/index.html @@ -1,5 +1,5 @@ --- -redirect: 2022fa/index.html +redirect: https://cse.buffalo.edu/courses/cse250/ title: CSE 250 - Data Structures --- diff --git a/src/teaching/cse-350/2024sp/index.erb b/src/teaching/cse-350/2024sp/index.erb index 207dafc9..824b5de8 100644 --- a/src/teaching/cse-350/2024sp/index.erb +++ b/src/teaching/cse-350/2024sp/index.erb @@ -1,5 +1,5 @@ --- -title: CSE-350 Data Structures (Fall 2024) +title: CSE-350 Data Structures (Spring 2024; As CSE-410) instructor: name: Oliver Kennedy hours: Weds 12:00-1:50 @@ -372,8 +372,8 @@ earned minus 50 points.

There will be one midterm exam during the semester and one 3-hour final exam during finals week. - The midterm exam is worth 20% of your grade. - The final exam is worth 20% of your grade. + The midterm exam is worth 15% of your grade. + The final exam is worth 15% of your grade. We reserve the right to change the scaling of the exams.